Applies ToDynamics NAV 2009

Sintomas

A versão em espanhol do Microsoft Dynamics NAV 2009, suponha que você tenha duas faturas individuais diferentes (mesmo cliente ou fornecedor ou outro). Cada uma das duas faturas usa apenas uma linha, mas diferente % de IVA (uma fatura 21% e os 10% por exemplo). Você lança essas notas fiscais através do envio de documentos para Cartera (faturas ou contas a Cartera) e adicionar essas duas faturas individuais em uma ordem de pagamento ou grupo da lista. Se você liquida apenas uma das linhas individualmente, o pagamento é exportado como "Z" na declaração 340. No entanto, quando você liquida os dois documentos, dois pagamentos são exportados como "2", que está errada, pois as faturas iniciais não foram do tipo "C" (linhas diferentes com diferente % de IVA), mas alguns individualmente (operação Normal é definida como "Em branco"). Siga as etapas na seção alterações de código para resolver o problema. Esse problema ocorre nos seguintes produtos:

  • A versão em espanhol do Microsoft Dynamics NAV 2009 R2

  • A versão em espanhol do Microsoft Dynamics NAV 2009 SP1

Resolução

Informações sobre o hotfix

Um hotfix suportado está disponível agora na Microsoft. No entanto, apenas destina-se a corrigir o problema descrito neste artigo. Aplique-o somente aos sistemas que apresentarem esse problema específico. Esta correção poderá ser submetida a testes adicionais. Portanto, se esse problema não o prejudicar, recomendamos que você aguarde o próximo service pack do Microsoft Dynamics NAV 2009 ou a próxima versão do Microsoft Dynamics NAV que contém esse hotfix.Observação: Em alguns casos, as taxas cobradas para suporte a chamadas podem ser canceladas se um profissional de suporte técnico do Microsoft Dynamics e produtos relacionados determina que uma atualização específica resolverá o problema. Os custos normais de suporte serão aplicados para questões de suporte adicionais e problemas que não se qualificam à atualização específica em questão.

Informações sobre a instalação

A Microsoft fornece exemplos de programação somente para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação a um propósito específico. Este artigo presume que você esteja familiarizado com a linguagem de programação que está sendo demonstrada e com as ferramentas usadas para criar e depurar procedimentos. Os engenheiros de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento. No entanto, eles não modificarão esses exemplos para fornecer funcionalidades adicionais ou construir procedimentos para atender às suas necessidades específicas.Observação: Antes de instalar esse hotfix, verifique se todos os usuários do cliente do Microsoft Dynamics NAV estiver desconectados do sistema. Isso inclui os serviços do Microsoft Dynamics NAV Application Server (NAS). Você deve ser o único usuário do cliente conectado ao implementar esse hotfix.Para implementar esse hotfix, você deve ter uma licença de desenvolvedor.É recomendável que a conta de usuário na janela de Logins do Windows ou na janela banco de dados seja atribuída a ID de função "SUPER". Se a conta de usuário não pode ser atribuída a ID de função "SUPER", você deverá verificar se a conta de usuário tem as seguintes permissões:

  • A permissão Modificar para o objeto que será alterado.

  • A permissão de execução para o objeto 5210 de identificação de objeto de sistema e o sistema 9015 de identificação de objetoobjeto.

Observação: Você não precisa ter direitos para os armazenamentos de dados, a menos que você precise executar o reparo de dados.

Alterações de código

Observação: Sempre teste código correções em um ambiente controlado antes de aplicar as correções para os computadores de produção.Para resolver esse problema, execute as seguintes etapas:

  1. Altere o código nas propriedades do relatório de fazer declaração 340 (10743) da seguinte forma:Código existente

    ...IF FORM.RUNMODAL(10744,TempDeclarationLines) = ACTION::LookupOK THEN BEGIN                       TempDeclarationLines.SETRANGE("Operation Code",'R');                       TempDeclarationLines.SETRANGE("Property Location",TempDeclarationLines."Property Location"::" ");// Delete the following lines.// VSTf307397.beginTempDeclarationLines.SETRANGE(Type,TempDeclarationLines.Type::Sale);// VSTF307397.endIF NOT TempDeclarationLines.ISEMPTY THENEXIT;TempDeclarationLines.RESET;CreateFileHeader;WriteDeclarationLinesToText(TempDeclarationLines);END ELSEEXIT;// End of the deleted lines.                   END;                   WriteAppliedPaymentsToText;                   IF FileHeaderCreated THEN BEGIN...

    Código de substituição

    ... IF FORM.RUNMODAL(10744,TempDeclarationLines) = ACTION::LookupOK THEN BEGIN                       TempDeclarationLines.SETRANGE("Operation Code",'R');                       TempDeclarationLines.SETRANGE("Property Location",TempDeclarationLines."Property Location"::" ");// Add the following lines.TempDeclarationLines.SETRANGE(Type,TempDeclarationLines.Type::Sale);IF NOT TempDeclarationLines.ISEMPTY THENEXIT;TempDeclarationLines.RESET;CreateFileHeader;WriteDeclarationLinesToText(TempDeclarationLines);END ELSEEXIT;// End of the added lines.                   END;                   WriteAppliedPaymentsToText;                   IF FileHeaderCreated THEN BEGIN...
  2. Altere o código no relatório de fazer declaração 340 (10743) da seguinte forma:Código existente

    ... VATEntry."Document Type"::Refund:                                  BEGIN                                    IF VATEntry."Unrealized VAT Entry No." <> 0 THEN BEGIN// Delete the following lines.UnrealizedVATEntry.GET(VATEntry."Unrealized VAT Entry No.");VendorDocumentNo := FindAppliedToDocumentNo(UnrealizedVATEntry);// End of the deleted lines.                                    END;                                    EXIT;                                  END;...

    Código de substituição

    ...VATEntry."Document Type"::Refund:                                  BEGIN                                    IF VATEntry."Unrealized VAT Entry No." <> 0 THEN BEGIN// Add the following lines.IF FindPmtOrderBillGrBankAcc(VATEntry.Type,VATEntry."Document No.") <> '' THENVendorDocumentNo := VATEntry."Document No."ELSE BEGINUnrealizedVATEntry.GET(VATEntry."Unrealized VAT Entry No.");VendorDocumentNo := FindAppliedToDocumentNo(UnrealizedVATEntry);END;// End of the added lines.                                    END;                                    EXIT;                                  END;...
  3. Altere o código da função CheckVATType no relatório fazer declaração 340 (10743) da seguinte forma:Código existente

    ...  IF VATEntries.FINDFIRST THEN        REPEAT          IF (VATEntries."VAT %" <> VATEntryRec."VAT %") OR// Delete the following lines.(VATEntries."EC %" <> VATEntryRec."EC %") THENEXIT(TRUE);// End of the deleted lines.        UNTIL VATEntries.NEXT = 0;    END;...

    Código de substituição

    ... IF VATEntries.FINDFIRST THEN        REPEAT          IF (VATEntries."VAT %" <> VATEntryRec."VAT %") OR// Add the following lines.(VATEntries."EC %" <> VATEntryRec."EC %")THEN BEGINIF VATEntryRec."Unrealized VAT Entry No." <> 0 THENEXIT(CheckVATOnUnrealVATEntries(VATEntryRec));EXIT(TRUE);END;// End of the added lines.        UNTIL VATEntries.NEXT = 0;    END;...
  4. Altere o código da função CheckVATOnUnrealVATEntries no relatório fazer declaração 340 (10743) da seguinte forma:Código existente

    ...UNTIL VATEntries.NEXT = 0;    END;    PROCEDURE CalcECAmount@1100002(VATEntryRec@1100000 : Record 254;VAR VATBuffer3@1100001 : TEMPORARY Record 10704);    VAR      Currency@1100004 : Record 4;...

    Código de substituição

    ...UNTIL VATEntries.NEXT = 0;    END;// Add the following lines.LOCAL PROCEDURE CheckVATOnUnrealVATEntries@1100044(VATEntryRec@1100000 : Record 254) : Boolean;VARUnrealVATEntry@1100001 : Record 254;BEGINUnrealVATEntry.GET(VATEntryRec."Unrealized VAT Entry No.");UnrealVATEntry.SETCURRENTKEY("Transaction No.");UnrealVATEntry.SETRANGE("Transaction No.",UnrealVATEntry."Transaction No.");IF UnrealVATEntry.FINDSET THENREPEATIF (UnrealVATEntry."VAT %" <> VATEntryRec."VAT %") OR(UnrealVATEntry."EC %" <> VATEntryRec."EC %")THENEXIT(TRUE);UNTIL UnrealVATEntry.NEXT = 0;EXIT(FALSE);END;// End of the added lines.PROCEDURE CalcECAmount@1100002(VATEntryRec@1100000 : Record 254;VAR VATBuffer3@1100001 : TEMPORARY Record 10704);    VAR      Currency@1100004 : Record 4;...
  5. Altere o código da função FindPmtOrderBillGrBankAcc no relatório fazer declaração 340 (10743) da seguinte forma:Código existente

    ...EXIT(FormatNumber(NoOfRegs,2));    END;    PROCEDURE RecordTypeSale@1100009();    VAR      UnrealizedVATEntry@1100001 : Record 254;...

    Código de substituição

    ...EXIT(FormatNumber(NoOfRegs,2));    END;// Add the following lines.LOCAL PROCEDURE FindPmtOrderBillGrBankAcc@1100058(Type@1100005 : Option;DocumentNo@1100000 : Code[20]) : Code[20];VARClosedBillGroup@1100003 : Record 7000007;ClosedPmtOrder@1100002 : Record 7000022;PostedBillGroup@1100004 : Record 7000006;PostedPmtOrder@1100001 : Record 7000021;BEGINCASE Type OFVATEntry.Type::Sale:BEGINIF PostedBillGroup.GET(DocumentNo) THENEXIT(PostedBillGroup."Bank Account No.");IF ClosedBillGroup.GET(DocumentNo) THENEXIT(ClosedBillGroup."Bank Account No.");END;VATEntry.Type::Purchase:BEGINIF PostedPmtOrder.GET(DocumentNo) THENEXIT(PostedPmtOrder."Bank Account No.");IF ClosedPmtOrder.GET(DocumentNo) THENEXIT(ClosedPmtOrder."Bank Account No.");END;END;EXIT('');END;// End of the added lines.PROCEDURE RecordTypeSale@1100009();    VAR      UnrealizedVATEntry@1100001 : Record 254;...
  6. Altere o código da função RecordTypeSale no relatório fazer declaração 340 (10743) da seguinte forma:1 de código existente

    ...END ELSE          OperationDateText := FormatDate(VATEntry."Posting Date");      IF VATEntry."Document Type" IN [VATEntry."Document Type"::Payment,VATEntry."Document Type"::Refund] THEN BEGIN        UnrealizedVATEntryNo := VATEntry."Unrealized VAT Entry No.";        DocumentDate := VATEntry."Posting Date";...

    1 código de substituição

    ... END ELSE          OperationDateText := FormatDate(VATEntry."Posting Date");// Add the following lines.AppliedToDocumentNo := VATEntry."Document No.";UnrealizedVATEntryNo := 0;// End of the added lines.      IF VATEntry."Document Type" IN [VATEntry."Document Type"::Payment,VATEntry."Document Type"::Refund] THEN BEGIN        UnrealizedVATEntryNo := VATEntry."Unrealized VAT Entry No.";        DocumentDate := VATEntry."Posting Date";...

    2 de código existente

    ...IF VATEntry."Document Type" IN [VATEntry."Document Type"::Payment,VATEntry."Document Type"::Refund] THEN BEGIN        UnrealizedVATEntryNo := VATEntry."Unrealized VAT Entry No.";        DocumentDate := VATEntry."Posting Date";// Delete the following line.IF UnrealizedVATEntryNo <> 0 THEN BEGIN// End of the deleted line.          UnrealizedVATEntry.GET(UnrealizedVATEntryNo);          AppliedToDocumentNo := FindAppliedToDocumentNo(UnrealizedVATEntry);          OperationDateText := FormatDate(UnrealizedVATEntry."Posting Date");...

    Código de substituição 2

    ...IF VATEntry."Document Type" IN [VATEntry."Document Type"::Payment,VATEntry."Document Type"::Refund] THEN BEGIN        UnrealizedVATEntryNo := VATEntry."Unrealized VAT Entry No.";        DocumentDate := VATEntry."Posting Date";// Add the following lines.IF (UnrealizedVATEntryNo <> 0) AND(FindPmtOrderBillGrBankAcc(VATEntry.Type,VATEntry."Document No.") = '')THEN BEGIN// End of the added lines.          UnrealizedVATEntry.GET(UnrealizedVATEntryNo);          AppliedToDocumentNo := FindAppliedToDocumentNo(UnrealizedVATEntry);          OperationDateText := FormatDate(UnrealizedVATEntry."Posting Date");...

    3 de código existente

    ... OperationDateText := FormatDate(UnrealizedVATEntry."Posting Date");          DocumentDate := UnrealizedVATEntry."Document Date";        END;// Delete the following lines.END ELSE BEGINAppliedToDocumentNo := VATEntry."Document No.";UnrealizedVATEntryNo := 0;// End of the deleted lines.      END;      CreateTempDeclarationLines(PADSTR(CustVATNumber,9,' '),Customer."No.",Customer.Name,DocumentDate,...

    Código de substituição 3

    ...OperationDateText := FormatDate(UnrealizedVATEntry."Posting Date");          DocumentDate := UnrealizedVATEntry."Document Date";        END;      END;      CreateTempDeclarationLines(PADSTR(CustVATNumber,9,' '),Customer."No.",Customer.Name,DocumentDate,...
  7. Altere o código da função AddCollectionBankAcc no relatório fazer declaração 340 (10743) da seguinte forma:1 de código existente

    ...VATEntryForPmnt@1100008 : Record 254;      BankAccLE@1100002 : Record 271;      CheckLE@1100004 : Record 272;// Delete the following line.BankAcc@1100006 : Record 270;// End of the deleted line.      CollectionPaymentMethodUsed@1100005 : Text[1];      BankAccountOrPaymentMethodUsed@1100003 : Text[34];      InsertPosition@1100007 : Integer;...

    1 código de substituição

    ...VATEntryForPmnt@1100008 : Record 254;      BankAccLE@1100002 : Record 271;      CheckLE@1100004 : Record 272;// Add the following line.BankAccNo@1100009 : Code[20];// End of the added line.      CollectionPaymentMethodUsed@1100005 : Text[1];      BankAccountOrPaymentMethodUsed@1100003 : Text[34];      InsertPosition@1100007 : Integer;...

    2 de código existente

    ... IF CheckLE.FINDFIRST THEN BEGIN          BankAccountOrPaymentMethodUsed := CheckLE."Check No.";          CollectionPaymentMethodUsed := 'T';// Delete the following lines.END ELSEIF BankAccLE.GET(DeclarationLine."Bank Account Ledger Entry No.") THEN BEGINCollectionPaymentMethodUsed := 'C';BankAcc.GET(BankAccLE."Bank Account No.");BankAccountOrPaymentMethodUsed := BankAcc."CCC No.";IF BankAccountOrPaymentMethodUsed = '' THENBankAccountOrPaymentMethodUsed := BankAcc."Bank Account No.";IF BankAccountOrPaymentMethodUsed = '' THENBankAccountOrPaymentMethodUsed :=COPYSTR(BankAcc.IBAN,1,MAXSTRLEN(BankAccountOrPaymentMethodUsed));END;// End of the deleted lines.IF BankAccountOrPaymentMethodUsed = '' THEN BEGIN          CollectionPaymentMethodUsed := 'O';          IF DeclarationLine.Type = DeclarationLine.Type::Sale THEN...

    Código de substituição 2

    ...IF CheckLE.FINDFIRST THEN BEGIN          BankAccountOrPaymentMethodUsed := CheckLE."Check No.";          CollectionPaymentMethodUsed := 'T';// Add the following lines.END ELSE BEGINIF BankAccLE.GET(DeclarationLine."Bank Account Ledger Entry No.") THENBankAccNo := BankAccLE."Bank Account No."ELSEBankAccNo := FindPmtOrderBillGrBankAcc(DeclarationLine.Type,DeclarationLine."Document No.");BankAccountOrPaymentMethodUsed := GetBankAccountUsed(BankAccNo);IF BankAccountOrPaymentMethodUsed <> '' THENCollectionPaymentMethodUsed := 'C';END;// End of the added lines.        IF BankAccountOrPaymentMethodUsed = '' THEN BEGIN          CollectionPaymentMethodUsed := 'O';          IF DeclarationLine.Type = DeclarationLine.Type::Sale THEN...
  8. Altere o código da função GetBankAccountUsed no relatório fazer declaração 340 (10743) da seguinte forma:Código existente

    ...  txt := InsertTextWithReplace(txt,BankAccountOrPaymentMethodUsed,InsertPosition);    END;    LOCAL PROCEDURE AreDatesInSamePeriod@1100035(Date1@1100000 : Date;Date2@1100001 : Date) : Boolean;    BEGIN      EXIT(CALCDATE('<CM>',Date1) = CALCDATE('<CM>',Date2));...

    Código de substituição

    ...txt := InsertTextWithReplace(txt,BankAccountOrPaymentMethodUsed,InsertPosition);    END;// Add the following lines.LOCAL PROCEDURE GetBankAccountUsed@1100059(BankAccNo@1100001 : Code[20]) BankAccountUsed : Text[34];VARBankAccount@1100000 : Record 270;BEGINWITH BankAccount DOIF GET(BankAccNo) THEN BEGINBankAccountUsed := "CCC No.";IF BankAccountUsed = '' THENBankAccountUsed := "Bank Account No.";IF BankAccountUsed = '' THENBankAccountUsed := COPYSTR(IBAN,1,MAXSTRLEN(BankAccountUsed));END;END;// End of the added lines.LOCAL PROCEDURE AreDatesInSamePeriod@1100035(Date1@1100000 : Date;Date2@1100001 : Date) : Boolean;    BEGIN      EXIT(CALCDATE('<CM>',Date1) = CALCDATE('<CM>',Date2));...

Pré-requisitos:

Você deve ter um dos seguintes produtos instalados para aplicar esse hotfix:

  • A versão em espanhol do Microsoft Dynamics NAV 2009 R2

  • A versão em espanhol do Microsoft Dynamics NAV 2009 SP1

Informações sobre remoção

Você não pode remover esse hotfix.

Status

A Microsoft confirma que este é um problema em seus produtos listados na seção "Aplica-se a".

Observação: Este é um artigo de "PUBLICAÇÃO RÁPIDA" criado diretamente de dentro da organização de suporte da Microsoft. As informações contidas neste documento são fornecidas desta maneira, em resposta a problemas emergentes. Como um dos resultados da velocidade da publicação, os materiais podem incluir erros tipográficos e podem ser revisados a qualquer momento sem aviso prévio. Consulte os Termos de usopara outras considerações.

Precisa de mais ajuda?

Quer mais opções

Explore os benefícios da assinatura, procure cursos de treinamento, saiba como proteger seu dispositivo e muito mais.

As comunidades ajudam você a fazer e responder perguntas, fazer comentários e ouvir especialistas com conhecimento avançado.