Skip to the content.

Exemplo de Cálculo de Impostos

A classe SysLibTax simplifica o cálculo de impostos em customizações do Protheus. Esse objeto é uma abstração das funções padrões como a MaFisIni e MaFisRet.

user function TaxSample()

  local cMsg      := ""
  local cPicture  := "@E 999,999,999.99"
  local cCustomer := "000001"
  local cUnit     := "01"
  local cProduct1 := "P00001"
  local cProduct2 := "P00002"
  local cTes      := "501"
  local nI        := 0
  local nQuantity := 1
  local nPrice    := 1000
  local aItems    := {}
  local oResult   := nil
  local oItem     := nil
  local oTax      := SysLibTax():new()
  local oUtils    := SysLibUtils():new()

  oTax:setCustomer(cCustomer, cUnit)
  oTax:setEntityType("F")
  oTax:addItem(cProduct1, cTes, nQuantity, nPrice)
  oTax:addItem(cProduct2, cTes, nQuantity, nPrice)

  oResult := oTax:calculate()
  aItems  := oResult["items"]

  cMsg := "Base ICMS: " + oUtils:strAnyType(oResult["icmsBase"], cPicture) + CRLF
  cMsg += "Valor ICMS: " + oUtils:strAnyType(oResult["icmsValue"], cPicture) + CRLF
  cMsg += "Valor NF: " + oUtils:strAnyType(oResult["invoiceValue"], cPicture) + CRLF
  cMsg += "Valor a Receber: " + oUtils:strAnyType(oResult["receivable"], cPicture) + CRLF + CRLF

  for nI := 1 to Len(aItems)
    oItem := aItems[nI]
    cMsg += "Item " + oUtils:strAnyType(nI) + CRLF
    cMsg += "- CFOP: " + oItem["cfop"] + CRLF
    cMsg += "- Base ICMS: " + oUtils:strAnyType(oItem["icmsBase"], cPicture) + CRLF
    cMsg += "- Valor ICMS: " + oUtils:strAnyType(oItem["icmsValue"], cPicture) + CRLF
    cMsg += "- Valor NF: " + oUtils:strAnyType(oItem["invoiceValue"], cPicture) + CRLF
    cMsg += "- Valor a Receber: " + oUtils:strAnyType(oItem["receivable"], cPicture) + CRLF + CRLF
  next nI

  oUtils:scrollMessage(cMsg)

return


Voltar