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/ptbr/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 NFe,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 NFe,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
exporter
TransportFactory
«implementation class»
transport
«implementation class»
stream
«implementation class»
message
«implementation class»
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()
read(returnData, returnInfo)
«implementation class»
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
EFiscalDocument_BR
1..1
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
2102010299 FORNECEDORES ESTRANGEIROS
Currency Amount currency Posting type
USD
1104010601 IMPORTACOES EM ANDAMENTO USD
1104010601 IMPORTACOES EM ANDAMENTO USD
-1000 Vendor balance
-63,63 Purchase fee
-661,15 Sales tax
Amount
-2200
-139,99
-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()
calc()
for each document line
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»
PurchCalcTax
«implementation class»
TaxPurchInvoice
Tax
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