احتساب خصم على السعر المتعدد المستويات

مستوى البرمجة: للمبتدئين
المدة: 10 دقائق
نوع المشروع: دالة مخصّصة

الأهداف

  • فهم ما يفعله الحلّ.
  • فهم ما تفعله خدمات برمجة التطبيقات ضمن الحلّ.
  • قم بإعداد النص البرمجي.
  • شغِّل النص البرمجي.

لمحة عن هذا الحلّ

إذا كنت تقدّم نظام تسعير متعدّد المستويات لعملائك، ستسهّل عليك هذه الوظيفة المخصّصة حساب مبالغ الخصم لأسعارك.

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

لقطة شاشة لنموذج أسعار الفئة

آلية العمل

يعني نموذج الأسعار المتدرجة أن تكلفة السلع أو الخدمات تقل استنادًا إلى الكمية التي تم شراؤها.

على سبيل المثال، لنفترض أنّ لديك مستويَين، أحدهما يتراوح من 0 إلى 500 دولار أمريكي (أو ما يعادله بالعملة المحلية) بسعر مخفّض بنسبة 10%، والآخر يتراوح بين 501 و1,000 دولار أمريكي (أو ما يعادله بالعملة المحلية) بسعر مخفّض بنسبة 20%. إذا كان السعر الإجمالي الذي تحتاج إلى حساب الخصم عليه هو 700 دولار أمريكي (أو ما يعادله بالعملة المحلية)، يعمل النص البرمجي على ضرب أول 500 دولار أمريكي في 10%، والمبلغ المتبقي 200 دولار أمريكي في 20%، وبالتالي يكون إجمالي الخصم 90 دولار أمريكي.

بالنسبة إلى السعر الإجمالي المحدَّد، يكرّر النص البرمجي الفئات المحدّدة في جدول تسعير الفئات. ولكل جزء من السعر الإجمالي الذي يقع ضمن فئة معيّنة، يتم ضرب هذا الجزء في قيمة النسبة المئوية المرتبطة بالفئة. والنتيجة هي مجموع الحسابات لكل فئة.

خدمات "برمجة تطبيقات Google"

يستخدم هذا الحلّ الخدمة التالية:

  • خدمة جدول البيانات - تأخذ القيمة المحددة وتحسب جزء القيمة المطلوب ضربه في النسبة المئوية للخصم لكل فئة.

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

لاستخدام هذا النموذج، يجب استيفاء المتطلبات الأساسية التالية:

  • حساب على Google (قد تتطلب حسابات Google Workspace موافقة المشرف).
  • متصفح ويب يمكنه الوصول إلى الإنترنت.

إعداد النص البرمجي

انقر على الزر أدناه لإنشاء نسخة من جدول بيانات دالة التسعير المخصّصة. تم إرفاق مشروع برمجة التطبيقات لهذا الحل بجدول البيانات.
إنشاء نسخة

تشغيل النص البرمجي

  1. في جدول البيانات المنسوخ، يعرض الجدول في الصف 16 طريقة حساب سعر نموذجي لمنتج كخدمة (SaaS).
  2. لحساب مبلغ الخصم، أدخِل =tierPrice(C19,$B$3:$D$6) في الخلية C20. يتم تعديل السعر النهائي في الخلية C21. إذا كنت في موقع يستخدم الفواصل العشرية، قد تحتاج إلى إدخال =tierPrice(C19;$B$3:$D$6) بدلاً من ذلك.

مراجعة الرمز

لمراجعة رمز برمجة التطبيقات لهذا الحلّ، انقر على عرض رمز المصدر أدناه:

عرض رمز المصدر

Code.gs

solutions/custom-functions/tier-pricing/Code.js
// To learn how to use this script, refer to the documentation:
// https://developers.google.com/apps-script/samples/custom-functions/tier-pricing

/*
Copyright 2022 Google LLC

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/**
 * Calculates the tiered pricing discount.  
 *  
 * You must provide a value to calculate its discount. The value can be a string or a reference
 * to a cell that contains a string.
 * You must provide a data table range, for example, $B$4:$D$7, that includes the 
 * tier start, end, and percent columns. If your table has headers, don't include
 * the headers in the range.
 * 
 * @param {string} value The value to calculate the discount for, which can be a string or a 
 * reference to a cell that contains a string.
 * @param {string} table The tier table data range using A1 notation.
 * @return number The total discount amount for the value.
 * @customfunction
 *  
 */
function tierPrice(value, table) {
  let total = 0;
  // Creates an array for each row of the table and loops through each array.
  for (let [start, end, percent] of table) {
  // Checks if the value is less than the starting value of the tier. If it is less, the loop stops.
    if (value < start) {
      break;
    }
  // Calculates the portion of the value to be multiplied by the tier's percent value.
    let amount = Math.min(value, end) - start;
  // Multiplies the amount by the tier's percent value and adds the product to the total.
    total += amount * percent;
  }
  return total;
}

التعديلات

يمكنك تعديل الدالة المخصصة بقدر ما ترغب في أن تناسب احتياجاتك. فيما يلي إضافة اختيارية لإعادة تحميل نتائج الدوال المخصصة يدويًا.

إعادة تحميل النتائج المخزّنة مؤقتًا

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

  1. أضِف مربّع اختيار إلى خلية فارغة بالنقر على إدراج > مربّع اختيار.
  2. أضِف الخلية التي تحتوي على مربّع الاختيار كمَعلمة إضافية للدالة المخصّصة. على سبيل المثال، إذا أضفت مربّع اختيار إلى الخلية D20، عدِّل الدالة tierPrice() في الخلية C20 إلى =tierPrice(C19,$B$3:$D$6,D20).
  3. ضع علامة في مربّع الاختيار أو أزِل العلامة لإعادة تحميل نتائج الدوال المخصّصة.

المساهمون

تحتفظ Google بهذا النموذج بمساعدة خبراء التطوير في Google.

الخطوات التالية