Um movimento de RG 23 A parte II adicional ou um movimento de RG 23 C parte II adicional é criado inesperadamente quando regista uma factura de compra na Índia versão do Microsoft Dynamics NAV 2009 Service Pack 1


Este artigo aplica-se para o Microsoft Dynamics NAV para indiano (idioma no).

Sintomas


Considere o seguinte cenário na Índia versão do Microsoft Dynamics NAV 2009 Service Pack 1 (SP1):
  • Criar uma encomenda de compra que utiliza a divisa estrangeira para um item.
  • Anexar uma estrutura para a compra para calcular o CVD ou impostos especiais de consumo sobre o item.
  • Registar a encomenda de compra como recibo.
  • É criado um movimento de RG 23 A parte II.
  • Criar uma factura de compra para a encomenda de compra utilizando a funcionalidade de recepção get.
  • Registar a factura de compra.
Neste cenário, um movimento de RG 23 A parte II adicional é criado inesperadamente.
Além disso, suponha que cria outra encomenda de compra de um imobilizado ou de um item em que está seleccionada a caixa de verificação do Item de Capital . No mesmo cenário, quando registar a factura de compra correspondente que é criada para a encomenda de compra, adicional RG 23 C parte II é criado um movimento inesperadamente.

Resolução


Informações sobre correção

Agora tem uma correcção suportada disponível na Microsoft. Contudo, destina-se apenas a corrigir o problema descrito neste artigo. Aplique-a apenas em sistemas que tenham este problema específico. Esta correcção poderá ser submetida a testes adicionais. Por conseguinte, se não estiver a ser gravemente afectado por este problema, recomendamos que aguarde o próximo service pack do Microsoft Dynamics NAV ou a próxima versão do Microsoft Dynamics NAV que contenha esta correcção.

Nota Em casos especiais, os custos normalmente inerentes para suporte chamadas poderão ser anuladas se um técnico de suporte técnico do Microsoft Dynamics e produtos relacionados determina que uma actualização específica resolverá o problema. Os custos de normais do suporte serão aplicados a questões de suporte adicionais e problemas que não se enquadrem na atualização específica em questão.


Informações de instalação

A Microsoft fornece exemplos de programação apenas a título ilustrativo, sem garantia expressa ou implícita. Isto inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação a um fim específico. Este artigo pressupõe que está familiarizado com a linguagem de programação que está a ser demonstrada e com as ferramentas que são utilizadas para criar e depurar procedimentos. Técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador.

Nota Antes de instalar esta correcção, certifique-se de que todos os utilizadores de cliente do Microsoft Navision são registados no sistema. Isto inclui os utilizadores de clientes do Microsoft Navision Application Server (NAS). Deve ser o único usuário do cliente que tem sessão iniciada quando implementar esta correcção.

Para implementar esta correcção, tem de ter uma licença de desenvolvedor.

Recomendamos que a conta de utilizador na janela Logins do Windows ou na janela Logins de base de dados seja atribuída a ID de função "SUPER". Se a conta de utilizador não é possível atribuir o ID de função "SUPER", tem de verificar que a conta de utilizador tem as seguintes permissões:
  • A permissão Modificar para o objecto que estará a alterar.
  • A permissão executar para o objecto 5210 de ID de objecto de sistema e para o objecto 9015 de ID de objecto de sistema .


Nota Não tem de ter direitos para os arquivos de dados, excepto se tiver de efectuar a reparação de dados.

Alterações de código

Nota Sempre o código de ensaio corrige num ambiente controlado antes de aplicar as correcções para os computadores de produção.
Para resolver este problema, siga estes passos:
  1. Altere o código nos campos da tabela Linha Compra (39) do seguinte modo:
    Código existente 1
    ...Currency."Amount Rounding Precision");
    "Inv. Discount Amount" := 0;
    "Inv. Disc. Amount to Invoice" := 0;
    UpdateAmounts;
    UpdateUnitCost;
    END;

    CaptionML=ENU=Line Discount %;
    DecimalPlaces=0:5;
    MinValue=0;
    ...
    Código de substituição 1
    ...Currency."Amount Rounding Precision");
    "Inv. Discount Amount" := 0;
    "Inv. Disc. Amount to Invoice" := 0;
    UpdateAmounts;
    UpdateUnitCost;

    // Add the following line.
    CheckExciseRegister;

    END;

    CaptionML=ENU=Line Discount %;
    DecimalPlaces=0:5;
    MinValue=0;
    ...
    Código existente 2
    ..."Line Discount %" := 0;
    "Inv. Discount Amount" := 0;
    "Inv. Disc. Amount to Invoice" := 0;
    UpdateAmounts;
    UpdateUnitCost;
    END;

    CaptionML=ENU=Line Discount Amount;
    AutoFormatType=1;
    AutoFormatExpr="Currency Code" }
    ...
    Código de substituição 2
    ..."Line Discount %" := 0;
    "Inv. Discount Amount" := 0;
    "Inv. Disc. Amount to Invoice" := 0;
    UpdateAmounts;
    UpdateUnitCost;

    // Add the following lines.
    GetPurchHeader;
    CheckExciseRegister;
    // End of the lines.

    END;

    CaptionML=ENU=Line Discount Amount;
    AutoFormatType=1;
    AutoFormatExpr="Currency Code" }
    ...
  2. Adicionar uma nova variável global na tabela Linha Compra (39) e, em seguida, especifique a variável da seguinte forma:
    • Nome: Text16510
    • Tipo de dados: TextConst
    • Valor: ENU =RG registe já criado para os recibos. Para efectuar as alterações reflectir-se nos registos RG, utilize a funcionalidade ' obter linhas g.r. Compra' da factura e depois registar.

  3. Altere o código de função UpdateStruOrdLineDetails na tabela Linha Compra (39) do seguinte modo:
    Código existente
    ...BEGIN
    GetPurchHeader;
    PurchHeader.TESTFIELD(Structure);
    StructureDetail.SETRANGE(Code, PurchHeader.Structure);
    StructureDetail.SETRANGE(Type,StructureDetail.Type::Excise);
    IF StructureDetail.FIND('-') THEN BEGIN
    StrOrderLineDetails.GET(StrOrderLineDetails.Type::Purchase,StructureDetail."Calculation Order",
    "Document Type","Document No.","No.","Line No.",StructureDetail.Type,'','EXCISE');
    ...
    Código de substituição
    ...BEGIN
    GetPurchHeader;
    PurchHeader.TESTFIELD(Structure);

    // Add the following line.
    CheckExciseRegister;

    StructureDetail.SETRANGE(Code, PurchHeader.Structure);
    StructureDetail.SETRANGE(Type,StructureDetail.Type::Excise);
    IF StructureDetail.FIND('-') THEN BEGIN
    StrOrderLineDetails.GET(StrOrderLineDetails.Type::Purchase,StructureDetail."Calculation Order",
    "Document Type","Document No.","No.","Line No.",StructureDetail.Type,'','EXCISE');
    ...
  4. Altere o código de função ShowSubOrderRcptForm na tabela Linha Compra (39) do seguinte modo:
    Código existente
    ...FORM.RUNMODAL(FORM::"Order Subcon Details Receipt",PurchaseLine)
    ELSE
    FORM.RUNMODAL(FORM::"Ord. Subcon Details Rcpt. List",PurchaseLine)
    END;

    // Delete the following line.
    BEGIN

    END.
    }
    }
    ...
    Código de substituição
    ...FORM.RUNMODAL(FORM::"Order Subcon Details Receipt",PurchaseLine)
    ELSE
    FORM.RUNMODAL(FORM::"Ord. Subcon Details Rcpt. List",PurchaseLine)
    END;

    // Add the following lines.
    PROCEDURE CheckExciseRegister@1102601000();
    BEGIN

    IF ((("Document Type" = "Document Type" ::"Return Order") OR ("Document Type" ="Document Type" ::Order)) AND
    ("Quantity Received" <> 0 ) AND ("Excise Amount" <> 0 ))
    THEN BEGIN
    IF NOT PurchHeader.Trading THEN
    IF ("Direct Unit Cost" <> xRec."Direct Unit Cost") OR ("Line Amount" <> xRec."Line Amount") OR
    ("Line Discount %" <> xRec."Line Discount %") OR ("Line Discount Amount" <> xRec."Line Discount Amount") OR
    ("BED Amount" <> xRec."BED Amount") OR ("AED(GSI) Amount" <> xRec."AED(GSI) Amount") OR
    ("SED Amount" <>xRec."SED Amount") OR ("SAED Amount" <> xRec."SAED Amount") OR
    ("CESS Amount" <> xRec."CESS Amount") OR ("NCCD Amount" <> xRec."NCCD Amount") OR
    ("eCess Amount" <> xRec."eCess Amount") OR ("ADET Amount" <> xRec."ADET Amount") OR
    ("ADE Amount"<> xRec."ADE Amount") OR ("SHE Cess Amount" <> xRec."SHE Cess Amount") OR
    ("AED(TTA) Amount" <> "AED(TTA) Amount")
    THEN
    ERROR(Text16510);
    END;
    // End of the lines.

    END;}
    }
    ...
  5. Altere as teclas na tabela RG 23 A parte II (13720) do seguinte modo:
    Código existente
    ...{ ;Entry No. ;Clustered=Yes }
    { ;Document No.,Posting Date }
    { ;Type }
    { ;Location E.C.C. No. ;SumIndexFields=BED Credit,AED(GSI) Credit,SED Credit,SAED Credit,NCCD Credit,eCess Credit,CESS Debit,ADC VAT Credit,SHE Cess Credit }
    { ;Posting Date,Location E.C.C. No.,Type }

    // Delete the following line.
    { ;Excise as Service Tax Credit,Closed,Remaining Excise Amount,Location E.C.C. No. }

    { ;Location E.C.C. No.,Excise as Service Tax Credit;
    SumIndexFields=Remaining BED Credit,Remaining AED(GSI) Credit,Remaining SED Credit,Remaining SAED Credit,Remaining NCCD Credit,Remaining eCess Credit,Remaining ADET Credit,Remaining AED(TTA) Credit,Remaining ADE Credit,Remaining ADC VAT Credit,Remaining SHECess Credit }
    { ;Location E.C.C. No.,Closed,Remaining Excise Amount,Excise as Service Tax Credit,Cenvat Cr. Receivable Account;
    SumIndexFields=Remaining BED Credit,Remaining AED(GSI) Credit,Remaining SED Credit,Remaining SAED Credit,Remaining NCCD Credit,Remaining eCess Credit,Remaining ADET Credit,Remaining AED(TTA) Credit,Remaining ADE Credit,Remaining ADC VAT Credit,Remaining SHECess Credit }
    { ;Location E.C.C. No.,Excise as Service Tax Credit,Posting Date;
    ...
    Código Repalcement
    ...{ ;Entry No. ;Clustered=Yes }
    { ;Document No.,Posting Date }
    { ;Type }
    { ;Location E.C.C. No. ;SumIndexFields=BED Credit,AED(GSI) Credit,SED Credit,SAED Credit,NCCD Credit,eCess Credit,CESS Debit,ADC VAT Credit,SHE Cess Credit }
    { ;Posting Date,Location E.C.C. No.,Type }

    // Add the following line.
    { ;Excise as Service Tax Credit,Closed,Location E.C.C. No. }

    { ;Location E.C.C. No.,Excise as Service Tax Credit;
    SumIndexFields=Remaining BED Credit,Remaining AED(GSI) Credit,Remaining SED Credit,Remaining SAED Credit,Remaining NCCD Credit,Remaining eCess Credit,Remaining ADET Credit,Remaining AED(TTA) Credit,Remaining ADE Credit,Remaining ADC VAT Credit,Remaining SHECess Credit }
    { ;Location E.C.C. No.,Closed,Remaining Excise Amount,Excise as Service Tax Credit,Cenvat Cr. Receivable Account;
    SumIndexFields=Remaining BED Credit,Remaining AED(GSI) Credit,Remaining SED Credit,Remaining SAED Credit,Remaining NCCD Credit,Remaining eCess Credit,Remaining ADET Credit,Remaining AED(TTA) Credit,Remaining ADE Credit,Remaining ADC VAT Credit,Remaining SHECess Credit }
    { ;Location E.C.C. No.,Excise as Service Tax Credit,Posting Date;
    ...
  6. Altere as teclas na tabela RG 23 C parte II (13722) do seguinte modo:
    Código existente
    ...{ ;Entry No. ;Clustered=Yes }
    { ;Document No.,Posting Date }
    { ;Type }
    { ;Location E.C.C. No. ;SumIndexFields=BED Credit,AED(GSI) Credit,SED Credit,SAED Credit,CESS Credit,NCCD Credit,eCess Credit,SHE Cess Credit,ADC VAT Credit }
    { ;Posting Date,Location E.C.C. No.,Type }

    // Delete the following line.
    { ;Excise as Service Tax Credit,Closed,Remaining Excise Amount,Location E.C.C. No. }

    { ;Location E.C.C. No.,Excise as Service Tax Credit;
    SumIndexFields=Remaining BED Credit,Remaining AED(GSI) Credit,Remaining SED Credit,Remaining SAED Credit,Remaining NCCD Credit,Remaining eCess Credit,Remaining ADET Credit,Remaining AED(TTA) Credit,Remaining ADE Credit,Remaining ADC VAT Credit,Remaining SHECess Credit }
    { ;Location E.C.C. No.,Closed,Remaining Excise Amount,Excise as Service Tax Credit;
    SumIndexFields=Remaining BED Credit,Remaining AED(GSI) Credit,Remaining SED Credit,Remaining SAED Credit,Remaining NCCD Credit,Remaining eCess Credit,Remaining ADET Credit,Remaining AED(TTA) Credit,Remaining ADE Credit,Remaining ADC VAT Credit,Remaining SHECess Credit }
    { ;Location E.C.C. No.,Excise as Service Tax Credit,Posting Date;
    ...
    Código de substituição
    ...{ ;Entry No. ;Clustered=Yes }
    { ;Document No.,Posting Date }
    { ;Type }
    { ;Location E.C.C. No. ;SumIndexFields=BED Credit,AED(GSI) Credit,SED Credit,SAED Credit,CESS Credit,NCCD Credit,eCess Credit,SHE Cess Credit,ADC VAT Credit }
    { ;Posting Date,Location E.C.C. No.,Type }

    // Add the following line.
    { ;Excise as Service Tax Credit,Closed,Location E.C.C. No. }

    { ;Location E.C.C. No.,Excise as Service Tax Credit;
    SumIndexFields=Remaining BED Credit,Remaining AED(GSI) Credit,Remaining SED Credit,Remaining SAED Credit,Remaining NCCD Credit,Remaining eCess Credit,Remaining ADET Credit,Remaining AED(TTA) Credit,Remaining ADE Credit,Remaining ADC VAT Credit,Remaining SHECess Credit }
    { ;Location E.C.C. No.,Closed,Remaining Excise Amount,Excise as Service Tax Credit;
    SumIndexFields=Remaining BED Credit,Remaining AED(GSI) Credit,Remaining SED Credit,Remaining SAED Credit,Remaining NCCD Credit,Remaining eCess Credit,Remaining ADET Credit,Remaining AED(TTA) Credit,Remaining ADE Credit,Remaining ADC VAT Credit,Remaining SHECess Credit }
    { ;Location E.C.C. No.,Excise as Service Tax Credit,Posting Date;
    ...
  7. Adicionar uma nova variável local na função CheckExciseInvoiceDiff no Compr.-registar codeunit (90) e, em seguida, especifique a variável da seguinte forma:
    • Nome: PurchRcptHead
    • Tipo de dados: registo
    • Subtipo: compra de . G. Remes (120)
  8. Alterar o código de função CheckExciseInvoiceDiff na Compr.-registar codeunit (90) do seguinte modo:
    Código existente 1
    ...EXIT;
    IF ("Document Type" = "Document Type"::Invoice) AND ("Receipt No." = '') THEN
    EXIT;
    IF ("Document Type" = "Document Type"::"Credit Memo") AND ("Return Shipment No." = '') THEN
    EXIT;

    // Delete the following lines.
    IF (NOT (Type IN[2,3])) THEN
    EXIT;
    // End of the lines.

    TempPurchLine.INIT;
    TempPurchLine.TRANSFERFIELDS(PurchLine);
    TempPurchLine.INSERT;

    IF ("Receipt No." <> '') THEN BEGIN
    ...
    Código de substituição 1
    ...EXIT;
    IF ("Document Type" = "Document Type"::Invoice) AND ("Receipt No." = '') THEN
    EXIT;
    IF ("Document Type" = "Document Type"::"Credit Memo") AND ("Return Shipment No." = '') THEN
    EXIT;

    // Add the following lines.
    IF (NOT (Type IN[1,2,3])) THEN
    EXIT;
    // End of the lines.

    TempPurchLine.INIT;
    TempPurchLine.TRANSFERFIELDS(PurchLine);
    TempPurchLine.INSERT;

    IF ("Receipt No." <> '') THEN BEGIN
    ...
    Código existente 2
    ...TempPurchLine.INSERT;

    IF ("Receipt No." <> '') THEN BEGIN
    RcptHeader.GET("Receipt No.");
    RcptLine.GET("Receipt No.","Receipt Line No.");
    "BED Amount" -= RcptLine."BED Amount";
    "ADET Amount" -= RcptLine."ADET Amount";
    "ADE Amount" -= RcptLine."ADE Amount";
    "AED(GSI) Amount" -= RcptLine."AED(GSI) Amount";
    "AED(TTA) Amount" -= RcptLine."AED(TTA) Amount";
    ...
    Código de substituição 2
    ...TempPurchLine.INSERT;

    IF ("Receipt No." <> '') THEN BEGIN
    RcptHeader.GET("Receipt No.");
    RcptLine.GET("Receipt No.","Receipt Line No.");

    // Add the following lines.
    IF RcptHeader."Currency Code" <> '' THEN BEGIN
    "BED Amount" := ("BED Amount" * RcptHeader."Currency Factor") - RcptLine."BED Amount";
    "ADET Amount" := ("ADET Amount" * RcptHeader."Currency Factor") - RcptLine."ADET Amount";
    "ADE Amount" := ("ADE Amount" * RcptHeader."Currency Factor") - RcptLine."ADE Amount";
    "AED(GSI) Amount" := ("AED(GSI) Amount" * RcptHeader."Currency Factor") - RcptLine."AED(GSI) Amount";
    "AED(TTA) Amount" := ("AED(TTA) Amount" * RcptHeader."Currency Factor") - RcptLine."AED(TTA) Amount";
    "CESS Amount" := ("CESS Amount" * RcptHeader."Currency Factor") - RcptLine."CESS Amount";
    "NCCD Amount" := ("NCCD Amount" * RcptHeader."Currency Factor") - RcptLine."NCCD Amount";
    "SAED Amount" := ("SAED Amount" * RcptHeader."Currency Factor") - RcptLine."SAED Amount";
    "SED Amount" := ("SED Amount" * RcptHeader."Currency Factor") - RcptLine."SED Amount";
    "eCess Amount" := ("eCess Amount" * RcptHeader."Currency Factor") - RcptLine."eCess Amount";
    "ADC VAT Amount" := ("ADC VAT Amount" * RcptHeader."Currency Factor") - RcptLine."ADC VAT Amount";
    "SHE Cess Amount" := ("SHE Cess Amount" * RcptHeader."Currency Factor") - RcptLine."SHE Cess Amount";
    "Custom eCess Amount" := ("Custom eCess Amount" * RcptHeader."Currency Factor") - RcptLine."Custom eCess Amount";
    "Custom SHECess Amount" := ("Custom SHECess Amount" * RcptHeader."Currency Factor") - RcptLine."Custom SHECess Amount";
    END ELSE BEGIN
    // End of the lines.

    "BED Amount" -= RcptLine."BED Amount";
    "ADET Amount" -= RcptLine."ADET Amount";
    "ADE Amount" -= RcptLine."ADE Amount";
    "AED(GSI) Amount" -= RcptLine."AED(GSI) Amount";
    "AED(TTA) Amount" -= RcptLine."AED(TTA) Amount";
    ...
    Código existente 3
    ..."eCess Amount" -= RcptLine."eCess Amount";
    "ADC VAT Amount" -= RcptLine."ADC VAT Amount";
    "SHE Cess Amount" -= RcptLine."SHE Cess Amount";
    "Custom eCess Amount" -= RcptLine."Custom eCess Amount";
    "Custom SHECess Amount" -= RcptLine."Custom SHECess Amount";

    IF (("BED Amount" <> 0) OR ("ADET Amount" <> 0) OR ("AED(GSI) Amount" <> 0) OR ("AED(TTA) Amount" <> 0) OR
    ("CESS Amount" <> 0) OR("NCCD Amount" <> 0) OR ("SAED Amount" <> 0) OR ("SED Amount" <> 0) OR ("eCess Amount" <> 0) OR
    ("ADE Amount" <> 0) OR ("ADC VAT Amount" <> 0) OR ("SHE Cess Amount" <> 0) OR ("Custom eCess Amount" <> 0) OR
    ("Custom SHECess Amount" <> 0))
    AND ("Excise Loading on Inventory" = FALSE)
    ...
    Código de substituição 3
    ..."eCess Amount" -= RcptLine."eCess Amount";
    "ADC VAT Amount" -= RcptLine."ADC VAT Amount";
    "SHE Cess Amount" -= RcptLine."SHE Cess Amount";
    "Custom eCess Amount" -= RcptLine."Custom eCess Amount";
    "Custom SHECess Amount" -= RcptLine."Custom SHECess Amount";

    // Add the following line.
    END;

    IF (("BED Amount" <> 0) OR ("ADET Amount" <> 0) OR ("AED(GSI) Amount" <> 0) OR ("AED(TTA) Amount" <> 0) OR
    ("CESS Amount" <> 0) OR("NCCD Amount" <> 0) OR ("SAED Amount" <> 0) OR ("SED Amount" <> 0) OR ("eCess Amount" <> 0) OR
    ("ADE Amount" <> 0) OR ("ADC VAT Amount" <> 0) OR ("SHE Cess Amount" <> 0) OR ("Custom eCess Amount" <> 0) OR
    ("Custom SHECess Amount" <> 0))
    AND ("Excise Loading on Inventory" = FALSE)
    ...
    Código existente 4
    ...THEN BEGIN
    "Qty. to Receive (Base)" := RcptLine.Quantity;
    "Line No." := RcptLine."Line No.";
    IF (((Type = Type::Item) AND ("Capital Item" = TRUE)) OR (Type = Type::"Fixed Asset")) THEN
    ExciseInsertRGRegister.InsertRG23CPartIIPurchase(PurchLine,RcptHeader,ReturnShptHeader,TRUE)

    // Delete the following lines.
    ELSE
    ExciseInsertRGRegister.InsertRG23APartIIPurchase(PurchLine,RcptHeader,ReturnShptHeader,TRUE);
    // End of the lines.

    RcptLine."BED Amount" := TempPurchLine."BED Amount";
    RcptLine."ADET Amount" := TempPurchLine."ADET Amount";
    RcptLine."ADE Amount" := TempPurchLine."ADE Amount";
    RcptLine."AED(GSI) Amount" := TempPurchLine."AED(GSI) Amount";
    RcptLine."AED(TTA) Amount" := TempPurchLine."AED(TTA) Amount";
    ...
    Código de substituição 4
    ...THEN BEGIN
    "Qty. to Receive (Base)" := RcptLine.Quantity;
    "Line No." := RcptLine."Line No.";
    IF (((Type = Type::Item) AND ("Capital Item" = TRUE)) OR (Type = Type::"Fixed Asset")) THEN
    ExciseInsertRGRegister.InsertRG23CPartIIPurchase(PurchLine,RcptHeader,ReturnShptHeader,TRUE)

    // Add the following lines.
    ELSE BEGIN
    IF (PurchLine."Receipt No." <> '') AND (PurchHeader."Currency Code" <> '') THEN BEGIN
    PurchRcptHead.GET(PurchLine."Receipt No.");
    IF PurchRcptHead."Currency Code" <> '' THEN
    ExciseInsertRGRegister.InsertRG23APartIIPurchase(PurchLine,RcptHeader,ReturnShptHeader,TRUE);
    END ELSE
    ExciseInsertRGRegister.InsertRG23APartIIPurchase(PurchLine,RcptHeader,ReturnShptHeader,TRUE);
    END;
    // End of the lines.

    RcptLine."BED Amount" := TempPurchLine."BED Amount";
    RcptLine."ADET Amount" := TempPurchLine."ADET Amount";
    RcptLine."ADE Amount" := TempPurchLine."ADE Amount";
    RcptLine."AED(GSI) Amount" := TempPurchLine."AED(GSI) Amount";
    RcptLine."AED(TTA) Amount" := TempPurchLine."AED(TTA) Amount";
  9. Altere o código na função InsertRG23APartIIPurchase na codeunit impostos especiais de consumo RG inserir registos (13701) do seguinte modo:
    Código existente
    ...RG23APartII."Remaining Excise Amount" := RG23APartII."Remaining BED Credit" + RG23APartII."Remaining AED(GSI) Credit" +
    RG23APartII."Remaining SED Credit" + RG23APartII."Remaining SAED Credit" + RG23APartII."Remaining NCCD Credit" +
    RG23APartII."Remaining eCess Credit" + RG23APartII."Remaining ADET Credit" + RG23APartII."Remaining AED(TTA) Credit" +
    RG23APartII."Remaining ADE Credit" + RG23APartII."Remaining ADC VAT Credit" +
    RG23APartII."Remaining SHECess Credit";

    END ELSE BEGIN
    RG23APartII."Posting Date" := ReturnShptHeader."Posting Date";
    RG23APartII."Document No." := ReturnShptHeader."No.";
    IF NOT ExciseDifference THEN BEGIN
    RG23APartII."BED Debit" :=
    ...
    Código de substituição
    ...RG23APartII."Remaining Excise Amount" := RG23APartII."Remaining BED Credit" + RG23APartII."Remaining AED(GSI) Credit" +
    RG23APartII."Remaining SED Credit" + RG23APartII."Remaining SAED Credit" + RG23APartII."Remaining NCCD Credit" +
    RG23APartII."Remaining eCess Credit" + RG23APartII."Remaining ADET Credit" + RG23APartII."Remaining AED(TTA) Credit" +
    RG23APartII."Remaining ADE Credit" + RG23APartII."Remaining ADC VAT Credit" +
    RG23APartII."Remaining SHECess Credit";

    // Add the following lines.
    IF ExciseDifference THEN
    AdjustCrEntriesRG23A(RG23APartII);
    // End of the lines.

    END ELSE BEGIN
    RG23APartII."Posting Date" := ReturnShptHeader."Posting Date";
    RG23APartII."Document No." := ReturnShptHeader."No.";
    IF NOT ExciseDifference THEN BEGIN
    RG23APartII."BED Debit" :=
    ...
  10. Adicionar uma nova variável local na função InsertRG23CPartIIPurchase na codeunit impostos especiais de consumo RG inserir registos (13701) e, em seguida, especifique a variável da seguinte forma:
    • Nome: TempRG23CPartII2
    • Tipo de dados: registo temporário
    • Subtipo: RG 23 C parte II (13722)
  11. Altere o código na função InsertRG23CPartIIPurchase na codeunit impostos especiais de consumo RG inserir registos (13701) do seguinte modo:
    Código existente
    ...RG23CPartII."Remaining Excise Amount" := RG23CPartII."Remaining BED Credit" + RG23CPartII."Remaining AED(GSI) Credit" +
    RG23CPartII."Remaining SED Credit" + RG23CPartII."Remaining SAED Credit" + RG23CPartII."Remaining NCCD Credit" +
    RG23CPartII."Remaining eCess Credit" + RG23CPartII."Remaining ADET Credit" + RG23CPartII."Remaining AED(TTA) Credit" +
    RG23CPartII."Remaining ADE Credit" + RG23CPartII."Remaining ADC VAT Credit" +
    RG23CPartII."Remaining SHECess Credit";

    END ELSE BEGIN
    RG23CPartII."Posting Date" := ReturnShptHeader."Posting Date";
    RG23CPartII."Document No." := ReturnShptHeader."No.";
    IF NOT ExciseDifference THEN BEGIN
    RG23CPartII."BED Debit":=
    ...
    Código de substituição
    ...RG23CPartII."Remaining Excise Amount" := RG23CPartII."Remaining BED Credit" + RG23CPartII."Remaining AED(GSI) Credit" +
    RG23CPartII."Remaining SED Credit" + RG23CPartII."Remaining SAED Credit" + RG23CPartII."Remaining NCCD Credit" +
    RG23CPartII."Remaining eCess Credit" + RG23CPartII."Remaining ADET Credit" + RG23CPartII."Remaining AED(TTA) Credit" +
    RG23CPartII."Remaining ADE Credit" + RG23CPartII."Remaining ADC VAT Credit" +
    RG23CPartII."Remaining SHECess Credit";

    // Add the following lines.
    IF ExciseDifference THEN BEGIN
    TempRG23CPartII2.INIT;
    TempRG23CPartII2.TRANSFERFIELDS(RG23CPartII);
    TempRG23CPartII2."BED Debit" := ROUND(TempRG23CPartII2."BED Debit" * 0.5);
    TempRG23CPartII2."AED(GSI) Debit" := ROUND(TempRG23CPartII2."AED(GSI) Debit" * 0.5);
    TempRG23CPartII2."SAED Debit" := ROUND(TempRG23CPartII2."SAED Debit" * 0.5);
    TempRG23CPartII2."NCCD Debit" := ROUND(TempRG23CPartII2."NCCD Debit" * 0.5);
    TempRG23CPartII2."eCess Debit" := ROUND(TempRG23CPartII2."eCess Debit" * 0.5);
    TempRG23CPartII2."SED Debit" := ROUND(TempRG23CPartII2."SED Debit" * 0.5);
    TempRG23CPartII2."ADET Debit" := ROUND(TempRG23CPartII2."ADET Debit" * 0.5);
    TempRG23CPartII2."AED(TTA) Debit" := ROUND(TempRG23CPartII2."AED(TTA) Debit" * 0.5);
    TempRG23CPartII2."ADE Debit":= ROUND(TempRG23CPartII2."ADE Debit" * 0.5);
    TempRG23CPartII2."SHE Cess Debit" := ROUND(TempRG23CPartII2."SHE Cess Debit" * 0.5);
    TempRG23CPartII2."ADC VAT Debit" := ROUND(TempRG23CPartII2."ADC VAT Debit" * 0.5);
    AdjustCrEntriesRG23C(TempRG23CPartII2);
    END;
    // End of the lines.

    END ELSE BEGIN
    RG23CPartII."Posting Date" := ReturnShptHeader."Posting Date";
    RG23CPartII."Document No." := ReturnShptHeader."No.";
    IF NOT ExciseDifference THEN BEGIN
    RG23CPartII."BED Debit":=
    ...
  12. Altere o código na função AdjustCrEntriesRG23A na codeunit impostos especiais de consumo RG inserir registos (13701) do seguinte modo:
    Código existente 1
    ...BEGIN
    WITH RG23APartII2 DO BEGIN
    RG23APartII3.RESET;

    // Delete the following line.
    RG23APartII3.SETCURRENTKEY("Excise as Service Tax Credit",Closed,"Remaining Excise Amount","Location E.C.C. No.");

    IF "Excise Credit Availed as ST" THEN BEGIN
    RG23APartII3.SETRANGE("Excise as Service Tax Credit",TRUE);
    NextEntryNo := 0;
    ExciseAsSTUtilisation2.RESET;
    IF ExciseAsSTUtilisation2.FINDLAST THEN
    ...
    Código de substituição 1
    ...BEGIN
    WITH RG23APartII2 DO BEGIN
    RG23APartII3.RESET;

    // Add the following line.
    RG23APartII3.SETCURRENTKEY("Excise as Service Tax Credit",Closed,"Location E.C.C. No.");

    IF "Excise Credit Availed as ST" THEN BEGIN
    RG23APartII3.SETRANGE("Excise as Service Tax Credit",TRUE);
    NextEntryNo := 0;
    ExciseAsSTUtilisation2.RESET;
    IF ExciseAsSTUtilisation2.FINDLAST THEN
    ...
    Código existente 2
    ...IF ExciseAsSTUtilisation2.FINDLAST THEN
    NextEntryNo := ExciseAsSTUtilisation2."Entry No.";
    END;

    RG23APartII3.SETRANGE(Closed,FALSE);

    // Delete the following line.
    RG23APartII3.SETFILTER("Remaining Excise Amount",'>%1',0);

    RG23APartII3.SETRANGE("Location E.C.C. No.","Location E.C.C. No.");
    IF RG23APartII3.FINDSET THEN
    REPEAT
    RG23APartII4 := RG23APartII3;
    CompareAmt(RG23APartII4."Remaining BED Credit","BED Debit",RG23APartII4."Remaining Excise Amount");
    ...
    Código de substituição 2
    ...IF ExciseAsSTUtilisation2.FINDLAST THEN
    NextEntryNo := ExciseAsSTUtilisation2."Entry No.";
    END;

    RG23APartII3.SETRANGE(Closed,FALSE);

    RG23APartII3.SETRANGE("Location E.C.C. No.","Location E.C.C. No.");
    IF RG23APartII3.FINDSET THEN
    REPEAT
    RG23APartII4 := RG23APartII3;
    CompareAmt(RG23APartII4."Remaining BED Credit","BED Debit",RG23APartII4."Remaining Excise Amount");
    ...
  13. Altere o código na função AdjustCrEntriesRG23C na codeunit impostos especiais de consumo RG inserir registos (13701) do seguinte modo:
    Código existente 1
    ...BEGIN
    WITH RG23CPartII2 DO BEGIN
    RG23CPartII3.RESET;

    // Delete the following line.
    RG23CPartII3.SETCURRENTKEY("Excise as Service Tax Credit",Closed,"Remaining Excise Amount","Location E.C.C. No.");

    IF "Excise Credit Availed as ST" THEN BEGIN
    RG23CPartII3.SETRANGE("Excise as Service Tax Credit",TRUE);
    NextEntryNo := 0;
    ExciseAsSTUtilisation2.RESET;
    IF ExciseAsSTUtilisation2.FINDLAST THEN
    ...
    Código de substituição 1
    ...BEGIN
    WITH RG23CPartII2 DO BEGIN
    RG23CPartII3.RESET;

    // Add the following line.
    RG23CPartII3.SETCURRENTKEY("Excise as Service Tax Credit",Closed,"Location E.C.C. No.");

    IF "Excise Credit Availed as ST" THEN BEGIN
    RG23CPartII3.SETRANGE("Excise as Service Tax Credit",TRUE);
    NextEntryNo := 0;
    ExciseAsSTUtilisation2.RESET;
    IF ExciseAsSTUtilisation2.FINDLAST THEN
    ...
    Código existente 2
    ...ExciseAsSTUtilisation2.RESET;
    IF ExciseAsSTUtilisation2.FINDLAST THEN
    NextEntryNo := ExciseAsSTUtilisation2."Entry No.";
    END;
    RG23CPartII3.SETRANGE(Closed,FALSE);

    // Delete the following line.
    RG23CPartII3.SETFILTER("Remaining Excise Amount",'>%1',0);

    RG23CPartII3.SETRANGE("Location E.C.C. No.","Location E.C.C. No.");
    IF RG23CPartII3.FINDSET THEN
    REPEAT
    RG23CPartII4 := RG23CPartII3;
    CompareAmt(RG23CPartII4."Remaining BED Credit","BED Debit",RG23CPartII4."Remaining Excise Amount");
    ...
    Código de substituição 2
    ...ExciseAsSTUtilisation2.RESET;
    IF ExciseAsSTUtilisation2.FINDLAST THEN
    NextEntryNo := ExciseAsSTUtilisation2."Entry No.";
    END;
    RG23CPartII3.SETRANGE(Closed,FALSE);

    RG23CPartII3.SETRANGE("Location E.C.C. No.","Location E.C.C. No.");
    IF RG23CPartII3.FINDSET THEN
    REPEAT
    RG23CPartII4 := RG23CPartII3;
    CompareAmt(RG23CPartII4."Remaining BED Credit","BED Debit",RG23CPartII4."Remaining Excise Amount");
    ...
  14. Altere o código na função PostRegEntries na codeunit gestão do serviço fiscal (16471) do seguinte modo:
    Código existente 1
    ...GenJnlLine.RESET;
    GenJnlLine.SETRANGE("Document No.",DocNo);
    IF GenJnlLine.FINDFIRST THEN BEGIN
    CheckAvailableRGCredit(GenJnlLine);;
    RG23APartII.RESET;

    // Delete the following lines.
    RG23APartII.SETCURRENTKEY("Excise as Service Tax Credit",Closed,"Remaining Excise Amount","Location E.C.C. No.");
    RG23APartII.SETRANGE("Excise as Service Tax Credit",TRUE);
    RG23APartII.SETRANGE(Closed,FALSE);
    RG23APartII.SETFILTER("Remaining Excise Amount",'>%1',0);
    // End of the lines.

    RG23APartII.SETRANGE("Location E.C.C. No.",GenJnlLine."E.C.C. No.");
    IF RG23APartII.FINDFIRST THEN BEGIN
    GenJnlLine."Excise Bus. Posting Group" := RG23APartII."Excise Bus. Posting Group";
    GenJnlLine."Excise Prod. Posting Group" := RG23APartII."Excise Prod. Posting Group";
    GenJnlLine.VALIDATE("Account No.",RG23APartII."Cenvat Cr. Receivable Account");
    ...
    Código de substituição 1
    ...GenJnlLine.RESET;
    GenJnlLine.SETRANGE("Document No.",DocNo);
    IF GenJnlLine.FINDFIRST THEN BEGIN
    CheckAvailableRGCredit(GenJnlLine);;
    RG23APartII.RESET;

    // Add the following lines.
    RG23APartII.SETCURRENTKEY("Excise as Service Tax Credit",Closed,"Location E.C.C. No.");
    RG23APartII.SETRANGE("Excise as Service Tax Credit",TRUE);
    RG23APartII.SETRANGE(Closed,FALSE);
    // End of the lines.

    RG23APartII.SETRANGE("Location E.C.C. No.",GenJnlLine."E.C.C. No.");
    IF RG23APartII.FINDFIRST THEN BEGIN
    GenJnlLine."Excise Bus. Posting Group" := RG23APartII."Excise Bus. Posting Group";
    GenJnlLine."Excise Prod. Posting Group" := RG23APartII."Excise Prod. Posting Group";
    GenJnlLine.VALIDATE("Account No.",RG23APartII."Cenvat Cr. Receivable Account");
    ...
    Código existente 2
    ...GenJnlLine."Excise Bus. Posting Group" := RG23APartII."Excise Bus. Posting Group";
    GenJnlLine."Excise Prod. Posting Group" := RG23APartII."Excise Prod. Posting Group";
    GenJnlLine.VALIDATE("Account No.",RG23APartII."Cenvat Cr. Receivable Account");
    END ELSE BEGIN
    RG23CPartII.RESET;

    // Delete the following lines.
    RG23CPartII.SETCURRENTKEY("Excise as Service Tax Credit",Closed,"Remaining Excise Amount","Location E.C.C. No.");
    RG23CPartII.SETRANGE("Excise as Service Tax Credit",TRUE);
    RG23CPartII.SETRANGE(Closed,FALSE);
    RG23CPartII.SETFILTER("Remaining Excise Amount",'>%1',0);
    // End of the lines.

    RG23CPartII.SETRANGE("Location E.C.C. No.",GenJnlLine."E.C.C. No.");
    IF RG23CPartII.FINDFIRST THEN BEGIN
    GenJnlLine."Excise Bus. Posting Group" := RG23CPartII."Excise Bus. Posting Group";
    GenJnlLine."Excise Prod. Posting Group" := RG23CPartII."Excise Prod. Posting Group";
    GenJnlLine.VALIDATE("Account No.",RG23CPartII."Cenvat Cr. Receivable Acc.");
    ...
    Código de substituição 2
    ...GenJnlLine."Excise Bus. Posting Group" := RG23APartII."Excise Bus. Posting Group";
    GenJnlLine."Excise Prod. Posting Group" := RG23APartII."Excise Prod. Posting Group";
    GenJnlLine.VALIDATE("Account No.",RG23APartII."Cenvat Cr. Receivable Account");
    END ELSE BEGIN
    RG23CPartII.RESET;

    // Add the following lines.
    RG23CPartII.SETCURRENTKEY("Excise as Service Tax Credit",Closed,"Location E.C.C. No.");
    RG23CPartII.SETRANGE("Excise as Service Tax Credit",TRUE);
    RG23CPartII.SETRANGE(Closed,FALSE);
    // End of the lines.

    RG23CPartII.SETRANGE("Location E.C.C. No.",GenJnlLine."E.C.C. No.");
    IF RG23CPartII.FINDFIRST THEN BEGIN
    GenJnlLine."Excise Bus. Posting Group" := RG23CPartII."Excise Bus. Posting Group";
    GenJnlLine."Excise Prod. Posting Group" := RG23CPartII."Excise Prod. Posting Group";
    GenJnlLine.VALIDATE("Account No.",RG23CPartII."Cenvat Cr. Receivable Acc.");
    ...

Pré-requisitos

Tem de ter a versão indiana do Microsoft Dynamics NAV 2009 Service Pack 1 instalado para aplicar esta correcção.

Informações de remoção

Não é possível remover esta correcção.

Estado


A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".
Nota Este é um artigo "Publicação rápida" criado diretamente a partir da organização de suporte da Microsoft. As informações contidas neste documento são fornecidas como-se em resposta a questões emergentes. Como resultado da urgência na sua disponibilização, os materiais podem incluir erros tipográficos e podem ser revistos em qualquer altura sem aviso prévio. Para outras considerações, consulte os Termos de utilização .