جدول INV1 في SAP Business One (فاتورة المبيعات (الأسطر))

INV1 هو جدول SAP Business One الذي يخزن أسطر فواتير المبيعات: الصنف، والكمية، والسعر، وإجمالي السطر، والمستودع. ليس فيه بيانات رأس خاصة به، لذلك تربطه بـ OINV عبر DocEntry للحصول على التواريخ والعميل والحالة.

الحقول الرئيسية في INV1

الحقلما يحتويه
DocEntryمفتاح الفاتورة. يُربط بـ OINV.DocEntry.
LineNumرقم السطر داخل الفاتورة، يبدأ من 0.
ItemCodeالصنف المبيع. يُربط بـ OITM.ItemCode. فارغ في فواتير الخدمات.
Dscriptionوصف السطر (يُكتب بحرف i واحد ودون e بعد s).
Quantityالكمية بوحدة المبيعات.
Priceسعر الوحدة بعد خصم السطر.
PriceBefDiسعر الوحدة قبل خصم السطر.
LineTotalمبلغ السطر بالعملة المحلية، قبل الضريبة وقبل خصم الرأس.
WhsCodeالمستودع الذي خرج منه المخزون. يُربط بـ OWHS.WhsCode.
SlpCodeموظف المبيعات على السطر.
BaseType / BaseEntry / BaseLineالمستند المصدر الذي نُسخ منه السطر (مثلًا 15 = مذكرة تسليم، 17 = أمر بيع).

كيف يرتبط INV1 بالجداول الأخرى

INV1 هو جدول أسطر OINV. ينتمي كل صف إلى فاتورة واحدة بالضبط عبر DocEntry، و DocEntry + LineNum هو المفتاح الفريد للسطر. التواريخ والعميل وحالة الإلغاء وخصم الرأس موجودة في OINV، لذلك يربط كل استعلام على INV1 تقريبًا بـ OINV أيضًا.

عمليات الربط الشائعة

  • INV1 T1 INNER JOIN OINV T0 ON T1.DocEntry = T0.DocEntry (الرأس)
  • INV1 T1 LEFT JOIN OITM T2 ON T1.ItemCode = T2.ItemCode (البيانات الرئيسية للصنف)
  • INV1 T1 LEFT JOIN OWHS T3 ON T1.WhsCode = T3.WhsCode (المستودع)

متى تستخدم جدول INV1

استخدم INV1 لكل ما يخص الصنف: الأكثر مبيعًا، وبطيئو الحركة، والمبيعات حسب مجموعة الأصناف أو المستودع، والكميات المباعة في فترة. للقيم تذكّر خصم الرأس؛ أما للكميات فالأسطر هي المصدر الصحيح.

مثال على استعلام: الكمية والقيمة الصافية المباعة لكل صنف

SQL Server

SELECT T1.ItemCode, T1.Dscription, SUM(T1.Quantity) AS QtySold,
  SUM(T1.LineTotal * (1 - T0.DiscPrcnt / 100.0)) AS NetValue
FROM OINV T0
INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry
WHERE T0.CANCELED = 'N' AND T0.DocDate >= '20260101'
GROUP BY T1.ItemCode, T1.Dscription
ORDER BY NetValue DESC

SAP HANA (أسماء الأعمدة بين علامتي اقتباس مزدوجتين)

SELECT T1."ItemCode", T1."Dscription", SUM(T1."Quantity") AS "QtySold",
  SUM(T1."LineTotal" * (1 - T0."DiscPrcnt" / 100.0)) AS "NetValue"
FROM OINV T0
INNER JOIN INV1 T1 ON T0."DocEntry" = T1."DocEntry"
WHERE T0."CANCELED" = 'N' AND T0."DocDate" >= '20260101'
GROUP BY T1."ItemCode", T1."Dscription"
ORDER BY "NetValue" DESC

الصق أيًّا من النسختين في الأدوات ← الاستعلامات ← مولّد الاستعلامات (Tools → Queries → Query Generator). تحتاج اللهجة الأخرى لاستعلامك الخاص؟ استخدم محوّل SQL إلى HANA.

خطأ شائع: جمع LineTotal يضخّم المبيعات

LineTotal قبل خصم الرأس المُدخل في OINV.DiscPrcnt. إذا كان مستخدموك يمنحون خصومات على الرأس، فسيكون SUM(LineTotal) أعلى من تقرير تحليل المبيعات. اضرب في (1 - T0.DiscPrcnt / 100) كما في الاستعلام أعلاه، واطرح أسطر الإشعارات الدائنة للمبيعات (RIN1) بالمعامل نفسه. انظر حل عدم تطابق خصم الرأس.

استعلامات جاهزة تستخدم INV1

جداول ذات صلة

OINV (فاتورة المبيعات (الرأس)) · ORIN (الإشعار الدائن للمبيعات (الرأس)) · OITM (الأصناف (البيانات الرئيسية للصنف)) · OITW (مخزون الصنف حسب المستودع) · ابحث في كل جداول SAP Business One

المصادر: توثيق SAP Business One و SDK (مرجع جداول قاعدة البيانات في DI API)، بوابة SAP Help.

جاهز للبدء؟

أخبرنا بما تحتاجه. ستحصل على إجابة تقنية واضحة ونطاق عمل محدد وسعر ثابت، عادةً خلال 24 ساعة.