كيف تقوم بتنسيق مبالغ العملات السالبة بأقواس للمحاسبة؟
استخدم خيار currencySign لعرض قيم العملات السالبة بتدوين محاسبي
مقدمة
تعرض البيانات المالية والتقارير المحاسبية والميزانيات العمومية مبالغ العملات السالبة بين قوسين بدلاً من علامات الطرح. تظهر خسارة قدرها خمسمائة دولار على شكل ($500.00) بدلاً من -$500.00. يجعل هذا الأسلوب المبالغ السالبة أكثر تميزاً بصرياً، ويقلل من خطر تجاهل الخسائر، ويتبع المعايير المحاسبية المعتمدة.
توفر واجهة برمجة التطبيقات Intl.NumberFormat في JavaScript خيار currencySign لتنسيق مبالغ العملات السالبة بهذا التدوين المحاسبي. عندما تقوم بتعيين currencySign إلى "accounting"، تُعرض القيم السالبة تلقائياً بين قوسين وفقاً لاصطلاحات اللغة المحلية.
لماذا يستخدم التدوين المحاسبي الأقواس
نشأت ممارسة وضع المبالغ السالبة بين قوسين قبل أن تصبح أجهزة الكمبيوتر شائعة في المحاسبة. يمكن أن تكون علامة الطرح المطبوعة على الورق صغيرة أو باهتة أو يسهل تفويتها عند مسح أعمدة الأرقام. تنشئ الأقواس حداً بصرياً واضحاً حول القيم السالبة، مما يجعلها قابلة للتعرف عليها فوراً.
تمنع الأقواس أيضاً الخلط مع الواصلات أو الشرطات التي تظهر في سياقات أخرى. في الجداول المالية الكثيفة ذات الصفوف والأعمدة العديدة، تبرز الأقواس أكثر من حرف علامة الطرح الواحدة. يساعد هذا التمييز البصري على منع الأخطاء عند قراءة البيانات المالية أو نسخها أو تحليلها.
أصبح هذا الأسلوب ممارسة معيارية في المحاسبة ولا يزال مستخدماً على نطاق واسع اليوم. تعرض معظم برامج المحاسبة والتقارير المالية والميزانيات العمومية المبالغ السالبة بين قوسين. يتوقع المستخدمون المألوفون بالمستندات المالية هذا التنسيق ويجدونه أسهل في القراءة من علامات الطرح.
استخدام تنسيق المحاسبة currencySign
مرر خيار 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" مدعوم في جميع المتصفحات الحديثة. تدعم Chrome وEdge وFirefox وSafari ونظيراتها على الأجهزة المحمولة هذه الميزة في الإصدارات الصادرة منذ عام 2019.
إذا كنت بحاجة إلى دعم المتصفحات القديمة، فاختبر الميزة ووفر بديلاً احتياطيًا.
function formatCurrency(amount) {
try {
const formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
currencySign: 'accounting'
});
return formatter.format(amount);
} catch (error) {
// Fallback for browsers without accounting support
const formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD'
});
return formatter.format(amount);
}
}
يُرجع هذا البديل الاحتياطي تنسيق العملة القياسي إذا كان التنسيق المحاسبي غير متاح. من الناحية العملية، دعم التنسيق المحاسبي منتشر بشكل كافٍ بحيث نادرًا ما يكون هذا البديل الاحتياطي ضروريًا للتطبيقات التي تدعم المتصفحات الحديثة فقط.