يمكنك إنشاء أكثر من انتقاء مخزون لأمر مبيعات بشكل غير متوقع إذا تم تعيين حقل Shipping Advice في أمر المبيعات إلى Complete في Microsoft Dynamics NAV 2009 Service Pack 1

ينطبق على
Dynamics NAV 2009 Service Pack 1

تنطبق هذه المقالة على Microsoft Dynamics NAV لجميع البلدان وجميع اللغات المحلية.

الأعراض

يمكنك إنشاء أكثر من انتقاء مخزون لأمر مبيعات بشكل غير متوقع في Microsoft Dynamics NAV 2009 Service Pack 1 (SP1) إذا كانت قيمة حقل "نصيحة الشحن" في أمر المبيعات مكتملة. في هذه الحالة، لا يمكنك نشر أي من عمليات اختيار المخزون التي تم إنشاؤها.

الدقة

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

يتوفر الآن إصلاح عاجل مدعوم من Microsoft. ومع ذلك، فإنه يهدف فقط إلى تصحيح المشكلة الموضحة في هذه المقالة. قم بتطبيقه فقط على الأنظمة التي تواجه هذه المشكلة المحددة. قد يتلقى الإصلاح العاجل هذا اختبارا إضافيا. لذلك، إذا لم تتأثر بشدة بهذه المشكلة، نوصي بالانتظار حتى حزمة خدمة Microsoft Dynamics NAV التالية أو إصدار 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. قم بتغيير الحقول في جدول Sales Line (37) كما يلي:
    التعليمات البرمجية الموجودة

    ...
    
    CALCFIELDS("Reserved Qty. (Base)");
    
    TESTFIELD("Reserved Qty. (Base)",0);
    
    IF Type = Type::Item THEN
    
        WhseValidateSourceLine.SalesLineVerifyChange(Rec,xRec);
    
    END;
    
    TESTFIELD("Qty. Shipped Not Invoiced",0);
    
    TESTFIELD("Quantity Shipped",0);
    
    TESTFIELD("Shipment No.",'');
    
    
    
    TESTFIELD("Prepmt. Amt. Inv.",0);
    ...
    

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

    ...
    
    CALCFIELDS("Reserved Qty. (Base)");
    
    TESTFIELD("Reserved Qty. (Base)",0);
    
    IF Type = Type::Item THEN
    
        WhseValidateSourceLine.SalesLineVerifyChange(Rec,xRec);
    
    END;
    
    //Add the following lines.
    IF Type = Type::Item THEN
    
        CheckWhseActivityExists;
    //End of the lines.
    
    TESTFIELD("Qty. Shipped Not Invoiced",0);
    
    TESTFIELD("Quantity Shipped",0);
    
    TESTFIELD("Shipment No.",'');
    
    
    
    TESTFIELD("Prepmt. Amt. Inv.",0);
    ...
    
  2. تغيير المتغيرات العمومية في جدول Sales Line (37) كما يلي:
    التعليمات البرمجية الموجودة

    ...
            Text046@1105 : TextConst 'ENU=You cannot return more than the %1 units that you have shipped for %2 %3.';
    
            Text047@1106 : TextConst 'ENU=must be positive when %1 is not 0.';
    
            TrackingBlocked@1107 : Boolean;
    
            Text048@1108 : TextConst 'ENU=You cannot use item tracking on a %1 created from a %2.';
    
            Text049@1139 : TextConst 'ENU=cannot be %1.';
    
    
          PROCEDURE InitOutstanding@16();
    
          BEGIN
    
            IF "Document Type" IN ["Document Type"::"Return Order","Document Type"::"Credit Memo"] THEN BEGIN
    
              "Outstanding Quantity" := Quantity - "Return Qty. Received";
    ...
    

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

    ...
            Text046@1105 : TextConst 'ENU=You cannot return more than the %1 units that you have shipped for %2 %3.';
    
            Text047@1106 : TextConst 'ENU=must be positive when %1 is not 0.';
    
            TrackingBlocked@1107 : Boolean;
    
            Text048@1108 : TextConst 'ENU=You cannot use item tracking on a %1 created from a %2.';
    
            Text049@1139 : TextConst 'ENU=cannot be %1.';
    
            //Add the following line.
            Text052@1022 : TextConst 'ENU=Because the value of the %1 field is %2, and warehouse activities exist, you cannot add a new item to this order. You can either change the %3 field to Partial or delete the warehouse activities.';
    
    
          PROCEDURE InitOutstanding@16();
    
          BEGIN
    
            IF "Document Type" IN ["Document Type"::"Return Order","Document Type"::"Credit Memo"] THEN BEGIN
    
              "Outstanding Quantity" := Quantity - "Return Qty. Received";
    ...
    
  3. قم بتغيير التعليمات البرمجية في الدالة CheckWhseActivityExists في جدول Sales Line (37) كما يلي:
    التعليمات البرمجية الموجودة

    ...
              IF "Qty. to Invoice" = 0 THEN
    
                EXIT(TRUE);
    
            EXIT(FALSE);
    
          END;
    
    
    
          BEGIN
    
          END.
    
        }
    
      }
    ...
    

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

    ...
              IF "Qty. to Invoice" = 0 THEN
    
                EXIT(TRUE);
    
            EXIT(FALSE);
    
          END;
    
    
          //Add the following lines.
          PROCEDURE CheckWhseActivityExists@1011();
    
          VAR
    
            WhseActivityLine@1019 : Record 5767;
    
          BEGIN
    
            IF SalesHeader."Shipping Advice" = SalesHeader."Shipping Advice"::Complete THEN BEGIN
    
              WhseActivityLine.RESET;
    
              WhseActivityLine.SETCURRENTKEY("Source Type","Source Subtype","Source No.","Source Line No.","Source Subline No.");
    
              WhseActivityLine.SETRANGE("Source Type",DATABASE::"Sales Line");
    
              WhseActivityLine.SETRANGE("Source Subtype","Document Type");
    
              WhseActivityLine.SETRANGE("Source No.","Document No.");
    
              IF "Document Type" = "Document Type"::Order THEN
    
                WhseActivityLine.SETRANGE("Source Document",WhseActivityLine."Source Document"::"Sales Order");
    
              IF "Document Type" = "Document Type"::"Return Order" THEN
    
                WhseActivityLine.SETRANGE("Source Document",WhseActivityLine."Source Document"::"Sales Return Order");
    
              IF NOT WhseActivityLine.ISEMPTY THEN
    
                ERROR(Text052,SalesHeader.FIELDCAPTION("Shipping Advice"),SalesHeader."Shipping Advice",SalesHeader.FIELDCAPTION("Shipping Advice"));
    
            END;
    
          END;
          //End of the lines.
    
    
          BEGIN
    
          END.
    
        }
    
      }
    ...
    

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

يجب أن يكون لديك Microsoft Dynamics NAV 2009 Service Pack 1 مثبتا لتطبيق هذا الإصلاح العاجل.

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

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

الحالة

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

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