يستخدم النظام تاريخ المستند بدلا من تاريخ النشر بشكل غير صحيح عند تشغيل تقرير Make 347 Declaration للفواتير المنشورة في الإصدار الأسباني من Microsoft Dynamics NAV

ينطبق على
Dynamics NAV 2009 Microsoft Dynamics NAV 5.0

تنطبق هذه المقالة على Microsoft Dynamics NAV لمنطقة الإسبانية (es).

الأعراض

افترض أنك تنشر العديد من فواتير الشراء أو المبيعات في الإصدار الأسباني من Microsoft Dynamics NAV. عند تشغيل تقرير Make 347 Declaration (10707) الذي يستخدم نطاق تاريخ المستند للفواتير التي تم ترحيلها، يقوم النظام بإنشاء بيانات في ملف إعلان 347 بشكل غير صحيح. بالإضافة إلى ذلك، لا ينشئ النظام أي شيء في ملف الإعلان 347 عند تشغيل تقرير Make 347 Declaration الذي يستخدم نطاق تاريخ ترحيل الفواتير التي تم ترحيلها. ومع ذلك، يجب أن يستخدم النظام تاريخ الترحيل بدلا من تاريخ المستند عند تشغيل تقرير Make 347 Declaration للفواتير.
تحدث هذه المشكلة في المنتجات التالية:

  • الإصدار الأسباني من Microsoft Dynamics NAV 2009 R2
  • الإصدار الأسباني من Microsoft Dynamics NAV 2009 Service Pack 1
  • الإصدار الأسباني من Microsoft Dynamics NAV 5.0 Service Pack 1

      

الدقة

معلومات الإصلاح العاجل

يتوفر الآن إصلاح عاجل مدعوم من Microsoft. ومع ذلك، فإنه يهدف فقط إلى تصحيح المشكلة الموضحة في هذه المقالة. قم بتطبيقه فقط على الأنظمة التي تواجه هذه المشكلة المحددة. قد يتلقى الإصلاح العاجل هذا اختبارا إضافيا. لذلك، إذا لم تتأثر بشدة بهذه المشكلة، نوصي بالانتظار حتى حزمة خدمة Microsoft Dynamics NAV 2009 التالية أو إصدار Microsoft Dynamics NAV التالي الذي يحتوي على هذا الإصلاح العاجل.

ملاحظة في حالات خاصة، قد يتم إلغاء الرسوم التي يتم تكبدها عادة لمكالمات الدعم إذا حدد محترف الدعم التقني ل Microsoft Dynamics والمنتجات ذات الصلة أن تحديثا معينا سيحل مشكلتك. سيتم تطبيق تكاليف الدعم المعتادة على أسئلة الدعم الإضافية والمشكلات غير المؤهلة للتحديث المحدد المعني.

            
          

معلومات التثبيت

توفر Microsoft أمثلة برمجة للتوضيح فقط، دون ضمان سواء تم التعبير عنه أو تضمينه. وهذا يشمل، على سبيل المثال لا الحصر، الضمانات الضمنية للقابلية التجارية أو اللياقة البدنية لغرض معين. تفترض هذه المقالة أنك على دراية بلغة البرمجة التي يتم توضيحها ومع الأدوات المستخدمة لإنشاء إجراءات وتصحيح الأخطاء. يمكن لمهندسي دعم Microsoft المساعدة في شرح وظائف إجراء معين، لكنهم لن يعدلوا هذه الأمثلة لتوفير وظائف إضافية أو إجراءات بناء لتلبية متطلباتك المحددة.

ملاحظة قبل تثبيت هذا الإصلاح العاجل، تحقق من تسجيل خروج جميع مستخدمي عميل Microsoft Navision من النظام. يتضمن ذلك مستخدمي عميل Microsoft Navision Application Services (NAS). يجب أن تكون المستخدم العميل الوحيد الذي قام بتسجيل الدخول عند تنفيذ هذا الإصلاح العاجل.

لتنفيذ هذا الإصلاح العاجل، يجب أن يكون لديك ترخيص مطور.

نوصي بتعيين معرف دور "SUPER" لحساب المستخدم في نافذة تسجيلات الدخول إلى Windows أو في نافذة تسجيلات دخول قاعدة البيانات. إذا تعذر تعيين معرف دور "SUPER" لحساب المستخدم، فيجب عليك التحقق من أن حساب المستخدم لديه الأذونات التالية:

  • إذن تعديل للكائن الذي ستقوم بتغييره.
  • إذن Execute للكائن System Object ID 5210 ولعنصر System Object ID 9015.

                
ملاحظة ليس لديك حقوق في مخازن البيانات ما لم يكن لديك لإجراء إصلاح البيانات.

تغييرات التعليمات البرمجية

ملاحظة اختبر دائما إصلاحات التعليمات البرمجية في بيئة خاضعة للرقابة قبل تطبيق الإصلاحات على أجهزة الكمبيوتر الإنتاجية.
لحل المشكلة، اتبع الخطوات التالية:

  1. قم بتغيير التعليمات البرمجية في رقم عنصر البيانات 3 في تقرير Make 347 Declaration (10707) كما يلي:
    التعليمات البرمجية الموجودة 1

    ...
    VATEntry.RESET;
    VATEntry.SETCURRENTKEY(Type,"Posting Date","Document Type","Document No.","Bill-to/Pay-to No.");
    VATEntry.SETRANGE(Type,VATEntry.Type::Sale);
    VATEntry.SETRANGE("Document No.","Document No.");
    
    // Delete the following line.
    VATEntry.SETRANGE("Document Date","Document Date");
    
    VATEntry.SETRANGE("Document Type","Document Type");
    VATEntry.SETRANGE("Country/Region Code",CountryCode);
    IF NOT VATEntry.FINDFIRST THEN BEGIN
    CASE "Document Type" OF
    ...
    

    رمز الاستبدال 1

    ...
    VATEntry.RESET;
    VATEntry.SETCURRENTKEY(Type,"Posting Date","Document Type","Document No.","Bill-to/Pay-to No.");
    VATEntry.SETRANGE(Type,VATEntry.Type::Sale);
    VATEntry.SETRANGE("Document No.","Document No.");
    
    // Add the following lines.
    VATEntry.SETRANGE("Document Date","Document Date");
    VATEntry.SETRANGE("Posting Date","Posting Date");
    // End of the lines.
    
    VATEntry.SETRANGE("Document Type","Document Type");
    VATEntry.SETRANGE("Country/Region Code",CountryCode);
    IF NOT VATEntry.FINDFIRST THEN BEGIN
    CASE "Document Type" OF
    ...
    

    التعليمات البرمجية الموجودة 2

    ...
    END;
    IF (VATEntry."VAT Registration No." <> '') OR NoTaxVATFound OR FromJournal THEN BEGIN
    CALCFIELDS("Amount (LCY)");
    SalesAmt := SalesAmt + "Amount (LCY)";
    
    // Delete the following line.
    UpdateQuarterAmount(AmountType::Sales,"Amount (LCY)","Document Date");
    
    END ELSE
    EmptyVATRegNo := TRUE;
    END;
    OnPostDataItem=VAR
    ...
    

    رمز الاستبدال 2

    ...
    END;
    IF (VATEntry."VAT Registration No." <> '') OR NoTaxVATFound OR FromJournal THEN BEGIN
    CALCFIELDS("Amount (LCY)");
    SalesAmt := SalesAmt + "Amount (LCY)";
    
    // Add the following lines.
    UpdateQuarterAmount(AmountType::Sales,"Amount (LCY)","Document Date");
    UpdateQuarterAmount(AmountType::Sales,"Amount (LCY)","Posting Date");
    // End of the lines.
    
    END ELSE
    EmptyVATRegNo := TRUE;
    END;
    OnPostDataItem=VAR
    ...
    

    التعليمات البرمجية الموجودة 3

    ...
    END;
    END;
    CalcFields=Amount;
    DataItemLink=Customer No.=FIELD(No.),
    
    // Delete the following line.
    Document Date=FIELD(Date Filter);
    
    }
    SECTIONS
    {
    }
    }
    ...
    

    رمز الاستبدال 3

    ...
    END;
    END;
    CalcFields=Amount;
    DataItemLink=Customer No.=FIELD(No.),
    
    // Add the following line.
    Posting Date=FIELD(Date Filter);
    
    }
    SECTIONS
    {
    }
    }
    ...
    
  2. قم بتغيير التعليمات البرمجية في رقم عنصر البيانات 6 في تقرير Make 347 Declaration (10707) كما يلي:
    التعليمات البرمجية الموجودة 1

    ...
    VATEntry.RESET;
    VATEntry.SETCURRENTKEY(Type,"Posting Date","Document Type","Document No.","Bill-to/Pay-to No.");
    VATEntry.SETRANGE(Type,VATEntry.Type::Purchase);
    VATEntry.SETRANGE("Document No.","Document No.");
    
    // Delete the following line.
    VATEntry.SETRANGE("Document Date","Document Date");
    
    VATEntry.SETRANGE("Document Type","Document Type");
    VATEntry.SETRANGE("Country/Region Code",CountryCode);
    IF NOT VATEntry.FINDFIRST THEN BEGIN
    CASE "Document Type" OF
    ...
    

    رمز الاستبدال 1

    ...
    VATEntry.RESET;
    VATEntry.SETCURRENTKEY(Type,"Posting Date","Document Type","Document No.","Bill-to/Pay-to No.");
    VATEntry.SETRANGE(Type,VATEntry.Type::Purchase);
    VATEntry.SETRANGE("Document No.","Document No.");
    
    // Add the following lines.
    VATEntry.SETRANGE("Document Date","Document Date");
    VATEntry.SETRANGE("Posting Date","Posting Date");
    // End of the lines.
    
    VATEntry.SETRANGE("Document Type","Document Type");
    VATEntry.SETRANGE("Country/Region Code",CountryCode);
    IF NOT VATEntry.FINDFIRST THEN BEGIN
    CASE "Document Type" OF
    ...
    

    التعليمات البرمجية الموجودة 2

    ...
    END;
    IF (VATEntry."VAT Registration No." <> '') OR NoTaxVATFound OR FromJournal THEN BEGIN
    CALCFIELDS("Amount (LCY)");
    PurchasesAmt := PurchasesAmt - "Amount (LCY)";
    
    // Delete the following line.
    UpdateQuarterAmount(AmountType::Purchase,-"Amount (LCY)","Document Date");
    
    END ELSE
    EmptyVATRegNo := TRUE;
    END;
    OnPostDataItem=BEGIN
    ...
    

    رمز الاستبدال 2

    ...
    END;
    IF (VATEntry."VAT Registration No." <> '') OR NoTaxVATFound OR FromJournal THEN BEGIN
    CALCFIELDS("Amount (LCY)");
    PurchasesAmt := PurchasesAmt - "Amount (LCY)";
    
    // Add the following lines.
    UpdateQuarterAmount(AmountType::Purchase,-"Amount (LCY)","Document Date");
    UpdateQuarterAmount(AmountType::Purchase,-"Amount (LCY)","Posting Date");
    // End of the lines.
    
    END ELSE
    EmptyVATRegNo := TRUE;
    END;
    OnPostDataItem=BEGIN
    ...
    

    التعليمة البرمجية Exisitng 3

    ...
    END;
    END;
    CalcFields=Amount;
    DataItemLink=Vendor No.=FIELD(No.),
    
    // Delete the following line.
    Document Date=FIELD(Date Filter);
    
    }
    SECTIONS
    {
    }
    }
    ...
    

    رمز الاستبدال 3

    ...
    END;
    END;
    CalcFields=Amount;
    DataItemLink=Vendor No.=FIELD(No.),
    
    // Add the following line.
    Posting Date=FIELD(Date Filter);
    
    }
    SECTIONS
    {
    }
    }
    ...
    
  3. قم بتغيير التعليمات البرمجية في الدالة CheckSameVATRegNo في تقرير Make 347 Declaration (10707) كما يلي:
    التعليمات البرمجية الموجودة 1

    ...
    END ELSE BEGIN
    VATEntry3.SETRANGE(Type,VATEntry3.Type::Purchase); 
    VATEntry3.SETRANGE("VAT Registration No.",Vendor."VAT Registration No.");
    VATEntry3.SETFILTER("Bill-to/Pay-to No.",'<>%1',Vendor."No.");
    END;
    
    // Delete the following line.
    VATEntry3.SETRANGE("Document Date",FromDate,ToDate); 
    
    IF VATEntry3.FINDFIRST THEN
    REPEAT
    IF IsCustomer THEN
    Amt := Amt - VATEntry3.Base - VATEntry3.Amount
    ...
    

    رمز الاستبدال 1

    ...
    END ELSE BEGIN
    VATEntry3.SETRANGE(Type,VATEntry3.Type::Purchase);
    VATEntry3.SETRANGE("VAT Registration No.",Vendor."VAT Registration No.");
    VATEntry3.SETFILTER("Bill-to/Pay-to No.",'<>%1',Vendor."No.");
    END;
    
    // Add the following lines.
    VATEntry3.SETRANGE("Document Date",FromDate,ToDate);
    VATEntry3.SETRANGE("Posting Date",FromDate,ToDate);
    // End of the lines.
    
    IF VATEntry3.FINDFIRST THEN
    REPEAT
    IF IsCustomer THEN
    Amt := Amt - VATEntry3.Base - VATEntry3.Amount
    ...
    

    التعليمات البرمجية الموجودة 2

    ...
    IF IsCustomer THEN
    Amt := Amt - VATEntry3.Base - VATEntry3.Amount
    ELSE
    Amt := Amt + VATEntry3.Base + VATEntry3.Amount;
    
    // Delete the following line.
    UpdateQuarterAmount(AmountType::Sales,ABS(VATEntry3.Base) + ABS(VATEntry3.Amount),VATEntry3."Document Date");
    
    TempVATEntry.SETRANGE("Transaction No.",VATEntry3."Transaction No.");
    IF NOT TempVATEntry.FINDFIRST THEN BEGIN
    GLEntry.SETRANGE("Transaction No.",VATEntry3."Transaction No.");
    IF GLEntry.FINDSET THEN
    REPEAT
    ...
    

    رمز الاستبدال 2

    ...
    IF IsCustomer THEN
    Amt := Amt - VATEntry3.Base - VATEntry3.Amount
    ELSE
    Amt := Amt + VATEntry3.Base + VATEntry3.Amount;
    
    // Add the following lines.
    UpdateQuarterAmount(AmountType::Sales,ABS(VATEntry3.Base) + ABS(VATEntry3.Amount),VATEntry3."Document Date");
    UpdateQuarterAmount(AmountType::Sales,ABS(VATEntry3.Base) + ABS(VATEntry3.Amount),VATEntry3."Posting Date");
    // End of the lines.
    
    TempVATEntry.SETRANGE("Transaction No.",VATEntry3."Transaction No.");
    IF NOT TempVATEntry.FINDFIRST THEN BEGIN
    GLEntry.SETRANGE("Transaction No.",VATEntry3."Transaction No.");
    IF GLEntry.FINDSET THEN
    REPEAT
    ...
    
  4. قم بتغيير التعليمات البرمجية في الدالة IdentifyCashPayments في تقرير Make 347 Declaration (10707) كما يلي:
    التعليمات البرمجية الموجودة

    ...
    CustLedgerEntry@1100001 : Record 21;
    BEGIN
    CustLedgerEntry.SETCURRENTKEY("Document Type","Customer No.","Posting Date","Currency Code");
    CustLedgerEntry.SETRANGE("Document Type",CustLedgerEntry."Document Type"::Payment);
    CustLedgerEntry.SETRANGE("Customer No.",CustomerNo);
    
    // Delete the following line.
    CustLedgerEntry.SETRANGE("Document Date",FromDate,ToDate);
    
    IF CustLedgerEntry.FINDSET THEN REPEAT
    IF (CustLedgerEntry."Bal. Account Type" = CustLedgerEntry."Bal. Account Type"::"G/L Account") AND
    (CustLedgerEntry."Bal. Account No." <> '')
    THEN BEGIN
    IF IsCashAccount(CustLedgerEntry."Bal. Account No.") THEN BEGIN
    ...
    

    رمز الاستبدال

    ...
    CustLedgerEntry@1100001 : Record 21;
    BEGIN
    CustLedgerEntry.SETCURRENTKEY("Document Type","Customer No.","Posting Date","Currency Code");
    CustLedgerEntry.SETRANGE("Document Type",CustLedgerEntry."Document Type"::Payment);
    CustLedgerEntry.SETRANGE("Customer No.",CustomerNo);
    
    // Add the following lines.
    CustLedgerEntry.SETRANGE("Document Date",FromDate,ToDate);
    CustLedgerEntry.SETRANGE("Posting Date",FromDate,ToDate);
    // End of the lines.
    
    IF CustLedgerEntry.FINDSET THEN REPEAT
    IF (CustLedgerEntry."Bal. Account Type" = CustLedgerEntry."Bal. Account Type"::"G/L Account") AND
    (CustLedgerEntry."Bal. Account No." <> '')
    THEN BEGIN
    IF IsCashAccount(CustLedgerEntry."Bal. Account No.") THEN BEGIN
    ...
    
  5. قم بتغيير التعليمات البرمجية في الدالة CreateCashTotals في تقرير Make 347 Declaration (10707) كما يلي:
    التعليمات البرمجية الموجودة 1

    ...
    IF DtldCustLedgEntry2."Cust. Ledger Entry No." <>
    DtldCustLedgEntry2."Applied Cust. Ledger Entry No."
    THEN BEGIN
    IF CustLedgerEntry.GET(DtldCustLedgEntry2."Cust. Ledger Entry No.") THEN
    UpdateCustomerCashBuffer(VATRegistrationNo,
    
    // Delete the following line.
    DATE2DMY(CustLedgerEntry."Document Date",3),-(DtldCustLedgEntry2."Amount (LCY)"));
    
    END;
    UNTIL DtldCustLedgEntry2.NEXT = 0;
    END ELSE BEGIN
    IF CustLedgerEntry.GET(DtldCustLedgEntry."Applied Cust. Ledger Entry No.") THEN
    UpdateCustomerCashBuffer(VATRegistrationNo,
    ...
    

    رمز الاستبدال 1

    ...
    IF DtldCustLedgEntry2."Cust. Ledger Entry No." <>
    DtldCustLedgEntry2."Applied Cust. Ledger Entry No."
    THEN BEGIN
    IF CustLedgerEntry.GET(DtldCustLedgEntry2."Cust. Ledger Entry No.") THEN
    UpdateCustomerCashBuffer(VATRegistrationNo,
    
    // Add the following lines.
    DATE2DMY(CustLedgerEntry."Document Date",3),-(DtldCustLedgEntry2."Amount (LCY)"));
    DATE2DMY(CustLedgerEntry."Posting Date",3),-(DtldCustLedgEntry2."Amount (LCY)"));
    // End of the lines.
    
    END;
    UNTIL DtldCustLedgEntry2.NEXT = 0;
    END ELSE BEGIN
    IF CustLedgerEntry.GET(DtldCustLedgEntry."Applied Cust. Ledger Entry No.") THEN
    UpdateCustomerCashBuffer(VATRegistrationNo,
    ...
    

    التعليمات البرمجية الموجودة 2

    ...
    END;
    UNTIL DtldCustLedgEntry2.NEXT = 0;
    END ELSE BEGIN
    IF CustLedgerEntry.GET(DtldCustLedgEntry."Applied Cust. Ledger Entry No.") THEN
    UpdateCustomerCashBuffer(VATRegistrationNo,
    
    // Delete the following line.
    DATE2DMY(CustLedgerEntry."Document Date",3),DtldCustLedgEntry."Amount (LCY)");
    
    END;
    UNTIL DtldCustLedgEntry.NEXT = 0;
    END;
    LOCAL PROCEDURE IsCashAccount@1100015(GLAccountNo@1100000 : Text[20]) : Boolean;
    ...
    

    رمز الاستبدال 2

    ...
    END;
    UNTIL DtldCustLedgEntry2.NEXT = 0;
    END ELSE BEGIN
    IF CustLedgerEntry.GET(DtldCustLedgEntry."Applied Cust. Ledger Entry No.") THEN
    UpdateCustomerCashBuffer(VATRegistrationNo,
    
    // Add the following lines.
    DATE2DMY(CustLedgerEntry."Document Date",3),DtldCustLedgEntry."Amount (LCY)");
    DATE2DMY(CustLedgerEntry."Posting Date",3),DtldCustLedgEntry."Amount (LCY)");
    // End of the lines.
    
    END;
    UNTIL DtldCustLedgEntry.NEXT = 0;
    END;
    LOCAL PROCEDURE IsCashAccount@1100015(GLAccountNo@1100000 : Text[20]) : Boolean;
    ...
    
  6. قم بتغيير التعليمات البرمجية في الدالة UpdateNotIn347Amount في تقرير Make 347 Declaration (10707) كما يلي:
    التعليمات البرمجية الموجودة

    ...
    BEGIN
    WITH GLEntry DO BEGIN
    GLAccount.GET("G/L Account No.");
    IF GLAccount."Ignore in 347 Report" THEN BEGIN
    NotIn347Amt := NotIn347Amt + Amount + "VAT Amount";
    
    // Delete the following line.
    UpdateQuarterAmount(AmountType::NotIn347Report,Amount + "VAT Amount","Document Date");
    
    END;
    END;
    END;
    BEGIN
    ...
    

    رمز الاستبدال

    ...
    BEGIN
    WITH GLEntry DO BEGIN
    GLAccount.GET("G/L Account No.");
    IF GLAccount."Ignore in 347 Report" THEN BEGIN
    NotIn347Amt := NotIn347Amt + Amount + "VAT Amount";
    
    // Add the following lines.
    UpdateQuarterAmount(AmountType::NotIn347Report,Amount + "VAT Amount","Document Date");
    UpdateQuarterAmount(AmountType::NotIn347Report,Amount + "VAT Amount","Posting Date");
    // End of the lines.
    
    END;
    END;
    END;
    BEGIN
    ...
    

          

المتطلبات الأساسية

يجب أن يكون لديك أحد المنتجات التالية مثبتا لتطبيق هذا الإصلاح العاجل:

  • الإصدار الأسباني من Microsoft Dynamics NAV 2009 R2
  • الإصدار الأسباني من Microsoft Dynamics NAV 2009 Service Pack 1
  • الإصدار الأسباني من Microsoft Dynamics NAV 5.0 Service Pack 1

معلومات الإزالة

لا يمكنك إزالة هذا الإصلاح العاجل.

الحالة

لقد أكدت Microsoft على أن هذه مشكلة في منتجات Microsoft المُدرجة في القسم "ينطبق على".

ملاحظة هذه مقالة "FAST PUBLISH" تم إنشاؤها مباشرة من داخل مؤسسة دعم Microsoft. وتقدم المعلومات الواردة هنا كما هي استجابة للقضايا الناشئة. نتيجة لسرعة إتاحتها، قد تتضمن المواد أخطاء مطبعية ويمكن مراجعتها في أي وقت دون إشعار. راجع شروط الاستخدام لاعتبارات أخرى.