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

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

الأهداف

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

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

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

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

لقطة شاشة لنموذج الأسعار المتعدّدة المستويات

آلية العمل

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

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

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

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

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

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

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

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

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

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

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

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

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

مراجعة الرمز

لمراجعة رمز Apps Script لهذا الحلّ، انقر على عرض رمز المصدر أدناه:

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

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 Developers.

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