كيف تقوم بتنسيق مبالغ العملة السالبة باستخدام الأقواس للمحاسبة؟

استخدم خيار currencySign لعرض قيم العملة السالبة بتدوين المحاسبة

مقدمة

تعرض البيانات المالية وتقارير المحاسبة والميزانيات العمومية المبالغ النقدية السالبة بين قوسين بدلاً من استخدام علامات الطرح. فخسارة بقيمة خمسمائة دولار تظهر على شكل ($500.00) بدلاً من -$500.00. هذه الاتفاقية تجعل المبالغ السالبة أكثر تميزاً بصرياً، وتقلل من خطر إغفال الخسائر، وتتبع معايير المحاسبة المعتمدة.

توفر واجهة برمجة التطبيقات Intl.NumberFormat في جافا سكريبت خيار currencySign لتنسيق المبالغ النقدية السالبة بهذا الترميز المحاسبي. عندما تضبط currencySign على "accounting"، تُعرض القيم السالبة تلقائياً بين قوسين وفقاً لاتفاقيات اللغة المحلية.

لماذا يستخدم الترميز المحاسبي الأقواس

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

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

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

استخدام تنسيق currencySign accounting

قم بتمرير خيار currencySign بقيمة "accounting" عند إنشاء نسخة من Intl.NumberFormat لتنسيق العملة. هذا يخبر المنسق باستخدام الترميز المحاسبي للمبالغ السالبة.

const formatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  currencySign: 'accounting'
});

console.log(formatter.format(-1234.56));
// Output: "($1,234.56)"

console.log(formatter.format(1234.56));
// Output: "$1,234.56"

يظهر المبلغ السالب محاطاً بأقواس بدون علامة طرح. تظهر المبالغ الموجبة بشكل طبيعي بدون أقواس. يطبق المنسق الترميز المحاسبي المناسب تلقائياً بناءً على ما إذا كانت القيمة موجبة أو سالبة.

يؤثر خيار currencySign فقط على تنسيق العملة. يجب عليك ضبط style: 'currency' وتوفير رمز currency ليصبح الخيار فعالاً.

مقارنة التنسيقات القياسية والمحاسبية

يستخدم تنسيق العملة الافتراضي علامة الطرح للقيم السالبة. يعمل هذا التنسيق القياسي بشكل جيد للأغراض العامة، بينما يتبع تنسيق المحاسبة اتفاقيات التقارير المالية.

const standard = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  currencySign: 'standard'
});

const accounting = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  currencySign: 'accounting'
});

console.log(standard.format(-500));
// Output: "-$500.00"

console.log(accounting.format(-500));
// Output: "($500.00)"

يضع التنسيق القياسي علامة الطرح قبل رمز العملة. أما تنسيق المحاسبة فيضع المبلغ بأكمله، بما في ذلك رمز العملة، بين قوسين. كلا التنسيقين ينتجان نفس المخرجات للقيم الموجبة.

إذا حذفت خيار currencySign، فإن المنسق يستخدم سلوك "standard" افتراضيًا.

const formatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD'
});

console.log(formatter.format(-500));
// Output: "-$500.00"

كيف تختلف الترميزات المحاسبية حسب اللغة المحلية

تضع اللغات المحلية المختلفة رمز العملة والأقواس في مواضع مختلفة وفقًا للاتفاقيات المحلية. تتعامل واجهة برمجة التطبيقات Intl.NumberFormat مع هذه الاختلافات تلقائيًا.

const currencies = [
  { locale: 'en-US', currency: 'USD' },
  { locale: 'de-DE', currency: 'EUR' },
  { locale: 'fr-FR', currency: 'EUR' },
  { locale: 'ja-JP', currency: 'JPY' }
];

currencies.forEach(({ locale, currency }) => {
  const formatter = new Intl.NumberFormat(locale, {
    style: 'currency',
    currency: currency,
    currencySign: 'accounting'
  });

  console.log(`${locale}: ${formatter.format(-1234.56)}`);
});

// Output:
// en-US: ($1,234.56)
// de-DE: (-1.234,56 €)
// fr-FR: (1 234,56 €)
// ja-JP: (¥-1,235)

تقوم كل لغة محلية بتنسيق المبلغ السالب وفقًا لاتفاقياتها الخاصة بوضع رمز العملة، وفواصل العشرات، وفواصل الآلاف، واستخدام الأقواس. لا تحتاج إلى معرفة هذه الاتفاقيات أو تنفيذها يدويًا. تطبق واجهة برمجة التطبيقات التنسيق الصحيح استنادًا إلى معرف اللغة المحلية.

تضع بعض اللغات المحلية علامة الطرح داخل الأقواس بالقرب من الرقم. بينما تضعها لغات أخرى بالقرب من رمز العملة. يتعامل المنسق مع هذه التفاصيل استنادًا إلى القواعد الخاصة باللغة المحلية.

دمج تدوين المحاسبة مع خيارات عرض الإشارة

يعمل خيار currencySign مع خيار signDisplay للتحكم في كيفية ظهور الإشارات في تنسيق العملة. يمنحك هذا الدمج تحكمًا دقيقًا في عرض المبالغ الإيجابية والسلبية.

const always = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  currencySign: 'accounting',
  signDisplay: 'always'
});

console.log(always.format(500));
// Output: "+$500.00"

console.log(always.format(-500));
// Output: "($500.00)"

مع signDisplay: 'always'، تظهر المبالغ الإيجابية بعلامة زائد بينما تستخدم المبالغ السلبية الأقواس. هذا يجعل كلاً من المكاسب والخسائر واضحة.

const never = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  currencySign: 'accounting',
  signDisplay: 'never'
});

console.log(never.format(500));
// Output: "$500.00"

console.log(never.format(-500));
// Output: "$500.00"

مع signDisplay: 'never'، تظهر المبالغ الإيجابية والسلبية بشكل متطابق بدون علامات أو أقواس. هذا يُظهر فقط القيمة المطلقة بغض النظر عما إذا كانت القيمة إيجابية أو سلبية.

const exceptZero = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  currencySign: 'accounting',
  signDisplay: 'exceptZero'
});

console.log(exceptZero.format(500));
// Output: "+$500.00"

console.log(exceptZero.format(-500));
// Output: "($500.00)"

console.log(exceptZero.format(0));
// Output: "$0.00"

مع signDisplay: 'exceptZero'، تُظهر المبالغ الإيجابية علامة زائد، وتستخدم المبالغ السلبية الأقواس، ويظهر الصفر بدون أي علامة. يعمل هذا التنسيق بشكل جيد لبيانات الربح والخسارة حيث ترغب في التأكيد على التغييرات مع الحفاظ على حيادية الصفر.

متى تستخدم تنسيق المحاسبة

استخدم تنسيق المحاسبة عند عرض البيانات المالية في سياقات يتوقع فيها المستخدمون اتفاقيات المحاسبة. وهذا يشمل البيانات المالية، والميزانيات العمومية، وبيانات الدخل، وتقارير الربح والخسارة، وواجهات برامج المحاسبة.

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

const accountingFormatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  currencySign: 'accounting'
});

const accounts = [
  { name: 'Cash', balance: 15000 },
  { name: 'Accounts Receivable', balance: -3500 },
  { name: 'Inventory', balance: 12000 },
  { name: 'Accounts Payable', balance: -8000 }
];

accounts.forEach(account => {
  const formatted = accountingFormatter.format(account.balance);
  console.log(`${account.name}: ${formatted}`);
});

// Output:
// Cash: $15,000.00
// Accounts Receivable: ($3,500.00)
// Inventory: $12,000.00
// Accounts Payable: ($8,000.00)

تجعل الأقواس الأرصدة السلبية بارزة، مما يساعد المستخدمين على تحديد الحسابات ذات القيم السلبية بنظرة سريعة.

استخدم التنسيق القياسي للتجارة الإلكترونية العامة، أو واجهات المستخدم الموجهة للمستهلكين، أو السياقات التي لا تنطبق فيها اتفاقيات المحاسبة. معظم المستخدمين خارج مجال المحاسبة والتمويل أقل دراية بتدوين الأقواس ويتوقعون رؤية علامات الطرح للمبالغ السلبية.

const standardFormatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD'
});

// For a shopping cart or refund:
console.log(standardFormatter.format(-25.50));
// Output: "-$25.50"

اختر تنسيق المحاسبة عندما يتوقع جمهورك اتفاقيات إعداد التقارير المالية. اختر التنسيق القياسي عندما يتوقع جمهورك عروضًا موجهة للمستهلكين. طابق التنسيق مع توقعات المستخدمين والسياق الذي تظهر فيه الأرقام.

دعم المتصفح لتنسيق المحاسبة

خيار currencySign: "accounting" مدعوم في جميع المتصفحات الحديثة. كروم، إيدج، فايرفوكس، سفاري، ونظائرها المحمولة جميعها تدعم هذه الميزة في الإصدارات التي تم إطلاقها منذ عام 2019.

إذا كنت بحاجة إلى دعم المتصفحات القديمة، قم باختبار الميزة وتوفير حل بديل.

function formatCurrency(amount) {
  try {
    const formatter = new Intl.NumberFormat('en-US', {
      style: 'currency',
      currency: 'USD',
      currencySign: 'accounting'
    });
    return formatter.format(amount);
  } catch (error) {
    // حل بديل للمتصفحات التي لا تدعم تنسيق المحاسبة
    const formatter = new Intl.NumberFormat('en-US', {
      style: 'currency',
      currency: 'USD'
    });
    return formatter.format(amount);
  }
}

يقوم هذا الحل البديل بإرجاع تنسيق العملة القياسي إذا كان تنسيق المحاسبة غير متوفر. عملياً، دعم تنسيق المحاسبة منتشر بما فيه الكفاية بحيث نادراً ما يكون هذا الحل البديل ضرورياً للتطبيقات التي تدعم المتصفحات الحديثة فقط.