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