تقرير أعمار ذمم الموردين (AP Aging)
رصيد فواتير المشتريات المفتوحة لكل مورّد في فئات حسب تاريخ الاستحقاق.
الأداة
SELECT T0.CardCode, T0.CardName, SUM(CASE WHEN DATEDIFF(day, T0.DocDueDate, GETDATE()) <= 0 THEN T0.DocTotal - T0.PaidToDate ELSE 0 END) AS NotDue, SUM(CASE WHEN DATEDIFF(day, T0.DocDueDate, GETDATE()) BETWEEN 1 AND 30 THEN T0.DocTotal - T0.PaidToDate ELSE 0 END) AS Days1to30, SUM(CASE WHEN DATEDIFF(day, T0.DocDueDate, GETDATE()) BETWEEN 31 AND 60 THEN T0.DocTotal - T0.PaidToDate ELSE 0 END) AS Days31to60, SUM(CASE WHEN DATEDIFF(day, T0.DocDueDate, GETDATE()) > 60 THEN T0.DocTotal - T0.PaidToDate ELSE 0 END) AS Over60, SUM(T0.DocTotal - T0.PaidToDate) AS TotalOpen FROM OPCH T0 WHERE T0.DocStatus = 'O' AND T0.CANCELED = 'N' GROUP BY T0.CardCode, T0.CardName ORDER BY TotalOpen DESC
SELECT T0."CardCode", T0."CardName", SUM(CASE WHEN DAYS_BETWEEN(T0."DocDueDate", CURRENT_TIMESTAMP) <= 0 THEN T0."DocTotal" - T0."PaidToDate" ELSE 0 END) AS "NotDue", SUM(CASE WHEN DAYS_BETWEEN(T0."DocDueDate", CURRENT_TIMESTAMP) BETWEEN 1 AND 30 THEN T0."DocTotal" - T0."PaidToDate" ELSE 0 END) AS "Days1to30", SUM(CASE WHEN DAYS_BETWEEN(T0."DocDueDate", CURRENT_TIMESTAMP) BETWEEN 31 AND 60 THEN T0."DocTotal" - T0."PaidToDate" ELSE 0 END) AS "Days31to60", SUM(CASE WHEN DAYS_BETWEEN(T0."DocDueDate", CURRENT_TIMESTAMP) > 60 THEN T0."DocTotal" - T0."PaidToDate" ELSE 0 END) AS "Over60", SUM(T0."DocTotal" - T0."PaidToDate") AS "TotalOpen" FROM OPCH T0 WHERE T0."DocStatus" = 'O' AND T0."CANCELED" = 'N' GROUP BY T0."CardCode", T0."CardName" ORDER BY "TotalOpen" DESC
ما الذي يجيب عنه هذا الاستعلام
عندما يخطط المدير المالي لمدفوعات الموردين هذا الأسبوع، يكون السؤال: أي الفواتير تأخرت بالفعل وأيها يمكن أن ينتظر؟ يقسّم هذا الاستعلام فواتير المشتريات المفتوحة لكل مورّد إلى فئة غير مستحقة وفئات متأخرة.
مثال على النتائج
قيم تجريبية توضيحية. أعمدتك هي نفسها؛ والأرقام تأتي من شركتك.
| CardCode | CardName | NotDue | Days1to30 | Days31to60 | Over60 | TotalOpen |
|---|---|---|---|---|---|---|
| V10000 | Global Parts Co. | 15000 | 6200 | 0 | 0 | 21200 |
| V20000 | Metro Packaging | 4300 | 2750 | 1900 | 0 | 8950 |
| V23000 | Prime Logistics | 0 | 0 | 2400 | 3600 | 6000 |
SQL Server مقابل SAP HANA
تُستبدل DATEDIFF(day, T0.DocDueDate, GETDATE()) بـ DAYS_BETWEEN(T0."DocDueDate", CURRENT_TIMESTAMP) في التعبيرات الخمسة كلها. وتحتفظ فئة NotDue (<= 0) بمعناها لأن ترتيب المعاملات لم يتغير.
الأخطاء الشائعة وحلولها
- إجماليات الموردين أعلى من كشف حساب المورّد: لا تُطرح الإشعارات الدائنة المفتوحة للمشتريات ولا الدفعات المقدمة. أضف UNION ALL من ORPC بمبالغ سالبة إذا كان الموردون يصدرون إشعارات دائنة كثيرًا.
- فواتير مشتريات ملغاة تظهر: أبقِ T0.CANCELED = 'N'. الفواتير الملغاة مغلقة، لكن الشرط يحمي أيضًا من احتساب مستندات الإلغاء.
استعلامات ذات صلة
مرجع الجداول: جدول OPCH (فاتورة المشتريات (الرأس))
ثلاث خطوات بدون تسجيل
انسخ النسخة المناسبة
استخدم تبويب SQL Server لقواعد بيانات MS SQL، وتبويب HANA لـ SAP B1 على HANA.
افتح مولّد الاستعلامات
في SAP Business One اذهب إلى الأدوات ← الاستعلامات ← مولّد الاستعلامات (Tools → Queries → Query Generator)، والصق الاستعلام وانقر تنفيذ (Execute).
احفظ وشارك
انقر حفظ، واختر فئة، وسمِّ الاستعلام. يستطيع فريقك تشغيله من مدير الاستعلامات.
أسئلة حول هذه الأداة
كيف أشغّل استعلام «تقرير أعمار ذمم الموردين (AP Aging)» في SAP Business One؟
انسخ النسخة التي تناسب قاعدة بياناتك، وافتح الأدوات ← الاستعلامات ← مولّد الاستعلامات، والصقه في مربع SQL وانقر تنفيذ. احفظه لإعادة استخدامه لاحقًا.
ما الجداول التي يستخدمها هذا الاستعلام؟
يقرأ OPCH من المخطط القياسي لـ SAP Business One. لا يحتاج إلى أي حقول معرّفة من قِبل المستخدم.
هل يمكن تحويله إلى لوحة معلومات أو تنبيه؟
نعم. نحوّل الاستعلامات إلى تقارير Crystal، أو تقارير Excel تتحدّث تلقائيًا، أو تنبيهات SAP B1، أو رسائل واتساب للمديرين.
مصممة لفرق SAP Business One
تحتاج هذا داخل SAP Business One؟
نطوّر إضافات وتقارير وتكاملات لـ SAP B1 على SQL Server و HANA. أخبرنا بما تحتاجه واحصل على سعر ثابت، عادةً خلال 24 ساعة.
