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

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

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

الحقلما يحتويه
DocEntryالمفتاح الداخلي. يُربط بـ INV1.DocEntry وتستخدمه كل روابط المستندات.
DocNumرقم الفاتورة الذي يراه المستخدمون. فريد داخل كل سلسلة ترقيم، لا على مستوى الجدول كله.
DocDateتاريخ الترحيل. استخدمه لتقارير المبيعات حسب الفترة.
DocDueDateتاريخ الاستحقاق، محسوب من شروط الدفع. استخدمه لأعمار الذمم.
CardCodeرمز العميل. يُربط بـ OCRD.CardCode.
DocTotalالإجمالي شاملًا الضريبة والشحن، بعد خصم الرأس.
VatSumمبلغ الضريبة. DocTotal - VatSum يعطي المبلغ الصافي.
PaidToDateالمبلغ المدفوع حتى الآن. DocTotal - PaidToDate هو الرصيد المفتوح.
DiscPrcntنسبة خصم الرأس. غير مشمولة في INV1.LineTotal.
DocStatusO = مفتوحة، C = مغلقة (مسددة بالكامل أو مغلقة يدويًا).
CANCELEDN = عادية، Y = ملغاة، C = مستند الإلغاء نفسه.
SlpCodeموظف المبيعات. يُربط بـ OSLP.SlpCode.

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

OINV جدول رأس. لكل فاتورة صف واحد في OINV وصف لكل سطر صنف أو خدمة في INV1، ويشتركان في DocEntry نفسه. الشحن في INV3، وضريبة الاستقطاع في INV5، والأقساط في INV6. عندما تُنسخ الفاتورة من مذكرة تسليم أو أمر بيع، يُخزَّن الرابط في الأسطر (INV1.BaseType و BaseEntry و BaseLine)، لا في الرأس.

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

  • OINV T0 INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry (الأسطر)
  • OINV T0 INNER JOIN OCRD T2 ON T0.CardCode = T2.CardCode (البيانات الرئيسية للعميل)
  • OINV T0 LEFT JOIN OSLP T3 ON T0.SlpCode = T3.SlpCode (موظف المبيعات)
  • OINV T0 LEFT JOIN OUSR T4 ON T0.UserSign = T4.USERID (المستخدم الذي أنشأها)

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

يبدأ كل تقرير مبيعات أو تحصيل أو عمولات تقريبًا من OINV: المبيعات حسب العميل أو الفترة، والفواتير المفتوحة، والفواتير المتأخرة، وأعمار ذمم العملاء. لصافي المبيعات، اطرح الإشعارات الدائنة للمبيعات الموجودة في ORIN بأسماء الأعمدة نفسها، فيعمل شكل الاستعلام نفسه مع UNION ALL.

لإنشاء الفواتير من الكود، استخدم DI API (كائن Documents، ‏oInvoices) أو Service Layer ‏(Invoices)، ولا تستخدم أبدًا INSERT في OINV: فـ SAP لا تدعم الكتابة المباشرة في جداولها. وعندما يفشل Add()، يخبرك الرمز والنص من GetLastError بالسبب. انظر رموز أخطاء DI API ‏(-5002، -1029، -2028 وغيرها).

مثال على استعلام: فواتير المبيعات المفتوحة مع الرصيد

SQL Server

SELECT T0.DocNum, T0.DocDate, T0.DocDueDate, T0.CardCode, T0.CardName,
  T0.DocTotal, T0.PaidToDate, T0.DocTotal - T0.PaidToDate AS OpenAmount
FROM OINV T0
WHERE T0.DocStatus = 'O' AND T0.CANCELED = 'N'
ORDER BY T0.DocDueDate

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

SELECT T0."DocNum", T0."DocDate", T0."DocDueDate", T0."CardCode", T0."CardName",
  T0."DocTotal", T0."PaidToDate", T0."DocTotal" - T0."PaidToDate" AS "OpenAmount"
FROM OINV T0
WHERE T0."DocStatus" = 'O' AND T0."CANCELED" = 'N'
ORDER BY T0."DocDueDate"

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

خطأ شائع: DocTotal مقابل مجموع INV1.LineTotal

يتضمن DocTotal بالفعل خصم الرأس (DiscPrcnt) والضريبة والشحن. أما INV1.LineTotal فلا يتضمن خصم الرأس، لذلك يكون مجموع الأسطر أعلى من صافي الفاتورة عند استخدام خصم رأس. طبّق المعامل LineTotal * (1 - DiscPrcnt / 100) عندما تعدّ التقارير من الأسطر، وصفِّ CANCELED = 'N' حتى لا تُحتسب الفواتير الملغاة ومستندات إلغائها مرتين. انظر لماذا لا تتطابق إجماليات المبيعات في SAP B1 (خصم الرأس).

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

جداول ذات صلة

INV1 (فاتورة المبيعات (الأسطر)) · ORIN (الإشعار الدائن للمبيعات (الرأس)) · OCRD (شركاء الأعمال) · ORDR (أمر البيع (الرأس)) · ODLN (مذكرة التسليم (الرأس)) · ابحث في كل جداول SAP Business One

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

جاهز للبدء؟

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