Você está na página 1de 76

Novas funcionalidades brasileiras no

Roll-Up 5 do
Dynamics AX 2009

Agosto de 2010

1
Agenda

• Transferência de crédito de ICMS – 40 minutos


• Melhorias na área contábil – 30 minutos
• Coffee Break – 20 minutos
• Nota Fiscal Eletrônica – 30 minutos
• Importação – 30 minutos

2
Recursos Disponíveis

• PartnerSource
• Microsoft Dynamics Developer Center
– http://msdn.microsoft.com/pt-
br/dynamics/default.aspx
• Blogs
– www.joelpereira.com – Joel Pereira
– www.daniellandi.com – Daniel Landi
– www.fabiovazquez.com – Fabio Vazquez
– www.eduardomiranda.net – Eduardo Miranda

– www.daxdev.com.br – Rodrigo Matiazo

3
Transferência de Crédito de ICMS

Fábio Vazquez
Software Development Engineer
Contextualizando

• Quando uma empresa brasileira compra produtos, ela


acumula crédito de ICMS
• Quando ela vende produtos, ICMS é devido ao fisco
• Algumas vezes, o crédito de ICMS é maior
• Nesses casos, a empresa pode transferir o crédito para
outras empresas
• A nova funcionalidade suporta a operação de
transferência de crédito entre estabelecimentos de
mesma titularidade
• Operações de transferência de crédito de ICMS
requerem a emissão de uma Nota Fiscal
Contabilização

• Quando uma empresa transfere crédito de ICMS para


outra:
Debita Conta do Passivo

Credita ICMS a Recuperar

• Quando uma empresa recebe crédito de ICMS:


Debita ICMS a Recuperar

Credita Conta do Ativo


Transações

• Transações criadas por uma operação de


transferência de crédito de ICMS:
– Contabilidade (LedgerTrans)
– Imposto (TaxTrans)
Desafios

• Ax não oferecia nenhum tipo de documento que


suportasse os requerimentos de uma operação
de transferência de crédito de ICMS
• Assim, desenvolvemos um tipo completamente
novo de documento para registrar essas
operações
• Suporte para cancelamento
• O “posting” de impostos deveria ser desenvolvido
dentro do design de classes do Ax (Hierarquia de
classes Tax)
• Suporte para NF-e
Setup

• Contas a Receber > Perfis de Lançamento


• Contas a Pagar > Perfis de Lançamento
• Parâmetros Brasileiros (para configuração da
integração fiscal)
Demo

• Setup
• Lançamento de Nota Fiscal de saída para
transferência de crédito de ICMS para filial
Modelo de Dados

Tabelas Novas

Tabelas existentes
Tax supporting classes

Nova classe
Tax
Classes existentes

TaxFiscalDocument_BR TaxFiscalDocument_Invoice_BR
Tax supporting classes

TradeCalcTax Nova classe

Classes existentes

FiscalDocumentCalcTax_BR

FiscalDocumentCalcTax_Invoice_BR FiscalDocumentCalcTax_Order_BR
Tax supporting classes

TradeTotals
Novas classes

Classe existente

FiscalDocumentTotals_BR

FiscalDocumentTotals_Invoice_BR
FiscalDocPostJob_BR

• RunBaseBatch
• Algumas responsabilidades importantes:
– Criar números de voucher/nota fiscal
– Gerar transações de taxas /contábeis
– Gerar dados nas tabelas
FiscalDocPostedJour_BR/FiscalDocPostedTrans_BR
– Chamar o processo de post de notas fiscais/NF-e
Upgrade Scripts

• Dois novos scripts


(ReleaseUpdateDB60_Cust):
– updateAccountTypeFieldInFiscalDocJour_BR
• Atualiza a coluna AccountType (Customer|Vendor) que
foi adicionada à tabela FiscalDocJour_BR.
– updateReferencesInEFDocument_BR
• Todas as referências em EFDocument_BR apontam
agora para FiscalDocJour_BR.
RU5 Funcionalidades

AX 2009 – RU5

17
Agenda

 Numeração de Livros
Termo de Abertura/Encerramento
Validações / Relatórios alterados
Aspectos técnicos
 Substituição Tributária - Compras
Exemplo
 Texto de Transação
Juros
Multa
Retenção

18
Numeração de Livros

Termo de Abertura/Encerramento
Todos os Livros Fiscais possuem termos de abertura e encerramento

 Termo de Abertura é sempre a primeira página do livro fiscal

 Termo de Encerramento é sempre a última página do livro fiscal

 Texto
 Presença de “marcadores” para substituição por dados pré-definidos
- Book number (%1), page number (%2), company name (%3), address (%4), CNPJ (%5)

19
Numeração de Livros

 Livros
Máximo de páginas 500 (incluindo o Termo de
Abertura e Encerramento)
Impressão do número do Livro
Informação fornecida pelo usuário
Impressão do número da página (obrigatória se o
número do livro for informado)
Informação fornecida pelo usuário
Validações
Número da pagina (se informado o número do livro)
Intervado possível do número da pagina (2 – 499)

20
Numeração de Livros

Relatórios modificados
Diário
Balancete
Financial Statement Report
Razão

 Detalhe Técnico
 Todas as validações são controladas por uma única nova classe

21
Substituição Tributária

Definição
A Substituição Tributária pode ser conceituada
como sendo o regime pelo qual a
responsabilidade pelo ICMS devido em relação às
operações ou prestações de serviços é atribuída a
outro contribuinte
Esta funcionalidade já esta existe no AX, no
processamento de Vendas (AR)

22
Texto de Transação

 Visão Geral
Todas as transações contábeis devem ter um texto
(histórico contábil) que define/explica a transaçao
Juros, multas e retenção agora possuem textos de
transação
Novo “marcador” (%7) disponível para os textos de
transação (representando nome do Fornecedor /
Cliente)
Obrigatoriedade dos Textos de transação nos
pagamentos
Upgrade script
Private & Confidential 23
Texto de Transação

 As seguintes transações contábeis agora possuem textos de


transação:
Vendas – Retençao (Customer Payment withholding tax)
Vendas – Multa (Customer Payment Fine)
Vendas – juros (Customer Payment Interest)
Compras – Retenção (Vendor Payment Withholding Tax)
Compras – Multa (Vendor Payment Fine)
Compras – Juros (Vendor Payment Interest)
 Textos de transação agora são obrigatórios nos pagamentos
 Substituição de marcadores nos textos de transação nas telas de
pagamento
 Placeholders
 %1 (data), %2 (form), % 3 (voucher)... %7 (customer name)

24
Texto de Transação

 Juros e Multa
 Classe CustVendSettle é responsável também por definir os textos de
juros e multa
 Enumeração “ledgerTransTxt” é definido dependendo do tipo de transação

25
Texto de Transação

 Retenção
 LedgerTransTxt will be setup with new element for withholding tax

26
Texto de Transação

Tela de pagamento
Os marcadores dos textos de transação são
substituídos tão logo o usuário informa o texto
(histórico).
O texto de transação é apagado toda vez que
alguma informação referenciada pelos marcadores
é alterada.

27
Texto de Transação

Upgrade Script
Textos de transações serão atualizados conforme
regra abaixo, na instalação do RU5
 Juros e Multas (Compras /Vendas)
“fatura” + “: ” + %2 + “ – “ + %3 + “ – “ + %7

 Retenção (Compras / Vendas)


%5 + “ - ” + “fatura” + “: ” %2+ “ – “ + %3 + “ – “ + %7
(%5 = withholding tax type)

28
NF-e federal - AX2009
Versão 4.0

29
Agenda

• Review NF-e
• Mudanças no design
• Novas funcionalidades

30
Sobre a NF-e
• Substitui a nota fiscal impressa
• NF-e consiste nos seguintes processos:
- Envio do documento em xml para o governo
- SEFAZ processa a NF-e e retorna uma mensagem de confirmação para a
empresa. O retorno pode ser: aprovado, negado ou rejeitado
- Uma vez aprovada, a empresa imprime a DANFE.
- A empresa deve imprimir a DANFE em contigência em caso de problemas de
comunicação.
- NF-e pode ser cancelada a quealquer momento em um prazo máximo de 7
dias após a aprovação

31
Sobre a NF-e

• NF-e:
– Nota fiscal de venda
– Nota fiscal de texto livre
– Devolução de compra
– Nota fiscal de compra quando o fornecedor não é contribuinte de ICMS
• Não é NF-e:
– Devoluções de venda – cliente envia nota fiscal de devolução, a empresa somente recebe a
nota fiscal.
– Pedidos de compra quando o fornecedor é contribuinte de ICMS
– Nota de crédito gerada pelo processo de cancelamento de uma nota fiscal ja emitida.
• Fora de escopo (localização):
– Devolução de venda – emissão da devolução pela prórpia empresa
• Fora de escopo (NF-e)
– Delivery Slip
– Nota Fiscal de projetos

32
Modelo Operacional

• Empresa gera um XML que deve ser assinado


digitalmente utilizando um certificado digital
• XML é transmitido para a SEFAZ, que faz uma
validação e devolve uma autorização de uso. Sem
essa autorização não pode haver trânsito da
mercadoria
• Para acompanhar a mercadoria é impresso uma
representação da NF-e chamada DANFE que
contém a chave de acesso e código de barras.
33
Comunicação

34
Setup da NF-e até RU4
• Imporar o certificado digital
– Dar permissão de leitura ao usuário do AOS
• Setup dos Web Services
– Criar Web Services (NF-e, Retorno NF-
e,Cancelamento, Inutilização, Consulta)
– Configurar o WCF client para utilizar o certificado
• Códigos de Retorno
– Carregar codigos de retorno
• Tipo de Documento Fiscal
– Criar novo para modelo 55
Estados e mensages

36
Certificado Digital
Se o certificado não apresentar uma
chave significa que a chave privada
não foi importada e não sera
possível assinar o xml da NF-e

Private & Confidential 37


NF-e v4.0

MUDANÇAS NO DESIGN

38
Mudanças na UI

• Parâmetros Brasileiros
– Versão da NF-e
• Nenhuma nota fiscal deve estar no estado rejeitado ou
mensagem no estado enviado
– Arquivo de esquema da NF-e
– Seleção do formato pela versão ao invés da classe
• Form Nota Fiscal eletrônica – NF-e
– Saída/Entrada ao invés de Cliente/Fornecedor
– Tempo médio de resposta

39
Setup da NF-e RU5 (v4.0)
• Imporar o certificado digital
– Dar permissão de leitura ao usuário do AOS
• Setup dos Web Services
– Criar Web Services (NF-e, Retorno NF-
e,Cancelamento, Inutilização, Consulta)
– Configurar o WCF client para utilizar o certificado
• Códigos de Retorno
– Carregar codigos de retorno
• Tipo de Documento Fiscal
– Criar novo para modelo 55

40
Modelo estatico – RU4

41
Principais mudanças

• Transport: acesso direto as classes WCF client


• Validações no registro da nota
– V3: ICMS obrigatório para todas linha da nota
– V4: ISS ou ICMS obrigatório para todas linha da
nota
• Chave de acesso é diferente entre v3 e v4

42
RU4 and New RU5 Design

• RU4: Cada objeto é responsável por instanciar


sua classe.
• RU5: Transferência de responsabilidade para
uma nova classe que instancia a classe
baseada na versão ativa

EFDocClassFactory

+createMsgFormat(in webServiceEnum)
+createSendTransport(in messageTypeEnum)
+createReturnTransport(in messageTypeEnum)
+createInquireTransport(in messageTypeEnum)
+createValidation(in common)
+generateAccessKey(in eFdocument : EFiscalDocument_BR)
-generateAccessKeyV3()
-generateAccessKeyV4()
+createFormatLookup()

43
Validation – Post Invoice
• RU4 • RU5

validation validation classFactory

constructFromCustInvoiceJour constructFromCustInvoiceJour

createValidation

new() new()

checkPerLine

checkPerLine() checkTaxesPerLine()

44
Access key
• RU4 • RU5
efDocState efDocState

createFromFiscalDoc() createFromFiscalDoc

new
new()
initFromFiscalDoc
initFromFiscalDoc()

initializeEFDocument

initializeEFDocument()
generateNumericCode
classFactory

generateNumericCode()
generateAccessKey

generateAccessKeyV3()
generateAccessKey() {OR}

generateAccessKeyV4()

accessKey

return
return

45
RU4 – Format class
«implementation class» «implementation class» «implementation class» «implementation class»
exporter TransportFactory
transport stream message format

getSendTransport(messageTypeEnum)

newFromWebService(webServiceEnum) new:=new()

createFromMessageType:=createFromMessageType(messageType)

send(list, transport)

getSendStream:=getSendStream()

createMsgFormat(webServiceEnum)

construct

write(sendStream, list)

write(msgContent)

send()

callWebService(setup, msgData)

write(returnData)

getSendStream:=getSendStream()
«implementation class»
read(returnData, returnInfo) eFDocState

saveMsg()

messageSent(eFDocument, returnInfo)

46
RU5 – Format Class

47
RU4: Chamada web service

• Chama os proxies por .net reflection


• Usuário precisa configurar manualmente o
app.config do cliente WCF para usar o
certificado
• Todos os webservices tem duas strings como
argumentos
– XML Version
– XML data

48
RU5- Chamada web service

• Chama WFC client por .net reflection


• Não usa o WCF app.config, usuário não
precisa configurar o app.config
• Todos os webservices tem xmlNodes como
argumento

49
Mudanças no modelo de dados

CustInvoiceJour
1..1

1..1
EFiscalDocument_BR VendInvoiceJour
1..1

1..1
FiscalDocJour_BR
Alterações relacionadas à NF-e

VendInvoiceJour

CustInvoiceJour
Alterações relacionadas à NF-e

FiscalDocJour_BR
Entradas

Saídas
EFDocMsgExporter_BR

• RU4: Queries baseadas na tabelas Cust/Vend


invoiceJour
• RU5: Queries feita diretamente na tabela
FiscalDocJour_BR

53
EFDocState_BR

• RU4: Acoplado com tabelas Cust/Vend


invoiceJour tables, que causa uma série de
chamadas switch/case nos métodos
• RU5: Somente acoplada com a FiscalDocJour
table

54
NF-e v4.0

NEW FEATURES

55
New Features

• XML viewer
• XML schema validation

56
RU4 – Bugs corrigidos

• Somente a primeira NF-e é aprovado quando


mais de uma nota fislcal é enviada
• Distinghished name do certificado muito
longo
• Nós de valores das linhas não eram criado
quando o valor era zero

57
Know issues

• Função de exportar notas fiscais aprovadas


sem assinatura
• Erro na validação do CPF quando é emitida
uma NF-e para uma pessoa física
• Nem todas as mensagens XML tem a tag
<?xml encoding=UTF-8 />

58
Problemas com o SEFAZ/PR

• Problema: A SEFAZ/PR implementou o WSDL dos


webservices Consulta da Nf-e, Cancelamento,
Recepção, Retorno do processamento do Lote e
Inutilização de uma maneira diferente da
SEFAZ/SP e SEFAZ/RS.
• Baixe o WSDL do site da SEFAZ/RS, descompacte
em um diretório, verifique se o usuário do AOS
tem acesso de leitura a esse diretório, atribua o
acesso de leitura ao diretório caso ele não tenha.

Private & Confidential 59


Other resources

• Chapter 8 of Administration in Microsoft


Dynamics® AX 2009 - Batch Framework
• Web services de teste

60
Importação direta

61
Agenda

• Overview da importação direta


• Feature Walktrought
– Novos requisitos de setup
– Novas informação necessárias no faturamento
– Novos forms de consulta
• Visão geral do design e implementação
– Class diagrams
– E/R diagrams

62
Importação Direta

• Nota Fiscal emitida para declarar a compra de


produtos de um fornecedor estrangeiro
• Encargos da importação são adicionados no
processo de desembaraço, não são pagos ao
fornecedor estrangeiro mas fazem parte da
base de calculo dos impostos

63
Processo

64
Incidência de impostos

• Imposto de importação
• IPI
• PIS/COFINS
– Factor = (1+%ICMS *( %II+%IPI *(1+%II))) / (( 1 -
%PIS - %COFINS) *(1 - %ICMS))
• ICMS
– Fator = (∑impostos)/(1-%ICMS)

65
Encargos aplicados

• Freight
• Insurance
• SISCOMEX charge (somente ao ICMS)

66
Contabilidade

Ledger account Account name Currency Amount currency Posting type Amount
2102010299 FORNECEDORES ESTRANGEIROS USD -1000 Vendor balance -2200
1104010601 IMPORTACOES EM ANDAMENTO USD -63,63 Purchase fee -139,99
1104010601 IMPORTACOES EM ANDAMENTO USD -661,15 Sales tax -1454,53
1104010301 MATERIAS PRIMAS USD 63,63 Purchase, receipt 139,99
1104010301 MATERIAS PRIMAS USD 1100 Purchase, receipt 2420
1103060109 COFINS A COMPENSAR USD 110,81 Sales tax 243,78
1103060108 PIS A COMPENSAR USD 24,06 Sales tax 52,93
1103060102 ICMS A COMPENSAR USD 311,28 Sales tax 684,82
1103060101 IPI A COMPENSAR USD 115 Sales tax 253

67
FEATURES

68
Novos requisitos de setup

• Importação direta é ativado ao usar CFOP


3.###
• Impostos
– Campo “Marginal Base” deve ser “Net amount of
invoice balance”
– Todos os impostos devem ser marcados como
“Use Tax” no form de grupo de impostos
• Encargos
– Novo tipo de encargo: SISCOMEX

Private & Confidential 69


New Features

• Form de declaração de importação


• Mudança nos totais para apresentação dos
impostos brasileiros
• Ajustes na Nota Fiscal e DANFE
• Ajustes no xml da NF-e (formato 1.10 e 2.00)

70
ER AND SEQUENCE DIAGRAMS

Private & Confidential 71


Added Tables

Private & Confidential 72


Calculation Sequence diagram
«implementation class»
PurchCalcTax
«implementation class»
TaxPurch

new(purchCalcTax)

getTaxParm_BR()

for each document line


calc()

nextLine()

baseAmount:=baseAmount()
insertLineInInternal(baseAmount)

for each taxWorkTrans

determineSign_BR() {isFinalUser}

determineFinalUserBase_BR() {isDirectImport}

determineDirectImportBase_BR()
{TaxLimitBase != Invoice}

insertInternalStructure(taxCode, baseAmountMST)

calcTax()

taxAmount

Private & Confidential 73


Post Sequence Diagram

«implementation class» «implementation class»


Tax
PurchCalcTax TaxPurchInvoice

post(ledgerVoucher)

new(post, purchCalcTax, ledgerVoucher, tmpTaxWorkTrans)


foreach line

updateAndPost()

saveAndPost foreach taxWorkTrans

post

Private & Confidential 74


Upgrade scripts

• Todos os campos de valores da tabela


FiscalDocJour_BR são atualizados na moeda
da empresa

Private & Confidential 75


76

Você também pode gostar