BR-KSA-EN16931-11: صافي البند = الكمية × صافي السعر ± رسوم وخصومات البند
لكل cac:InvoiceLine، يجب أن يساوي cbc:LineExtensionAmount ناتج cbc:InvoicedQuantity × cac:Price/cbc:PriceAmount (مقسوماً على cac:Price/cbc:BaseQuantity إن وُجد)، مضافاً إليه رسوم cac:AllowanceCharge على مستوى البند (ChargeIndicator = true) ومطروحاً منه خصومات البند (false). التحقق الفعلي يقتطع ناتج الكمية × السعر إلى ثلاث خانات عشرية ثم يقرّب النتيجة إلى خانتين ويقبل فرقاً بمقدار ±0.01، بينما يطرح التعبير المنشور خصومات مستوى السعر (cac:Price/cac:AllowanceCharge) ولا يحتسب رسوم البند.
كيف تحلها
احسب cbc:LineExtensionAmount = الكمية × (PriceAmount ÷ BaseQuantity) + مجموع رسوم البند − مجموع خصومات البند، مقرّباً إلى خانتين عشريتين. ضع صافي السعر في cbc:PriceAmount، فخصم مستوى السعر يكون منعكساً فيه مسبقاً.
نص الهيئة الرسمي
[BR-KSA-EN16931-11]-Invoice line net amount (BT-131) must equal (Invoiced quantity (BT-129) * (Item net price (BT-146) / item price base quantity (BT-149))-) + Sum of invoice line charge amount (BT-141) - Sum of invoice line allowance amount (BT-136).
المصدر: ZATCA SDK 3.4.8 · ZATCA KSA rules
متى تفشل (الشرط اللي ينفّذه SDK الهيئة)
count((.)) > 0 and not ( ( ( not(exists(cac:Price/cbc:BaseQuantity)) and xs:decimal(cbc:LineExtensionAmount) = round( (( (floor((xs:decimal(cbc:InvoicedQuantity) * xs:decimal(cac:Price/cbc:PriceAmount) ) * 10 * 10 *10 )div 10 + 0.00000000001) ) div 100 )+ sum((cac:AllowanceCharge[cbc:ChargeIndicator=true()]/xs:decimal(cbc:Amount))) - sum((cac:AllowanceCharge[cbc:ChargeIndicator=false()]/xs:decimal(cbc:Amount))),2) +0.01) ) or ( ( not(exists(cac:Price/cbc:BaseQuantity)) and xs:decimal(cbc:LineExtensionAmount) = round( (( (floor((xs:decimal(cbc:InvoicedQuantity) * xs:decimal(cac:Price/cbc:PriceAmount) ) * 10 * 10 *10 )div 10 + 0.00000000001) ) div 100 )+ sum((cac:AllowanceCharge[cbc:ChargeIndicator=true()]/xs:decimal(cbc:Amount))) - sum((cac:AllowanceCharge[cbc:ChargeIndicator=false()]/xs:decimal(cbc:Amount))),2) -0.01) ) or ( ( not(exists(cac:Price/cbc:BaseQuantity)) and xs:decimal(cbc:LineExtensionAmount) = round( (( (floor((xs:decimal(cbc:InvoicedQuantity) * xs:decimal(cac:Price/cbc:PriceAmount) ) * 10 * 10 *10 )div 10 + 0.00000000001) ) div 100 )+ sum((cac:AllowanceCharge[cbc:ChargeIndicator=true()]/xs:decimal(cbc:Amount))) - sum((cac:AllowanceCharge[cbc:ChargeIndicator=false()]/xs:decimal(cbc:Amount))),2) ) ) or ( exists(cac:Price/cbc:BaseQuantity) and xs:decimal(cbc:LineExtensionAmount) = round(( (floor((xs:decimal(cbc:InvoicedQuantity) * (xs:decimal(cac:Price/cbc:PriceAmount) div xs:decimal(cac:Price/cbc:BaseQuantity)) ) * 10 * 10 * 10) div 10 + 0.00000000001 ) div 100 ) + sum((cac:AllowanceCharge[cbc:ChargeIndicator=true()]/xs:decimal(cbc:Amount))) - sum((cac:AllowanceCharge[cbc:ChargeIndicator=false()]/xs:decimal(cbc:Amount))) ,2 ) ) or ( exists(cac:Price/cbc:BaseQuantity) and xs:decimal(cbc:LineExtensionAmount) = round(( (floor((xs:decimal(cbc:InvoicedQuantity) * (xs:decimal(cac:Price/cbc:PriceAmount) div xs:decimal(cac:Price/cbc:BaseQuantity)) ) * 10 * 10 * 10) div 10 + 0.00000000001 ) div 100 ) + sum((cac:AllowanceCharge[cbc:ChargeIndicator=true()]/xs:decimal(cbc:Amount))) - sum((cac:AllowanceCharge[cbc:ChargeIndicator=false()]/xs:decimal(cbc:Amount))) ,2 ) +0.01) or ( exists(cac:Price/cbc:BaseQuantity) and xs:decimal(cbc:LineExtensionAmount) = round(( (floor((xs:decimal(cbc:InvoicedQuantity) * (xs:decimal(cac:Price/cbc:PriceAmount) div xs:decimal(cac:Price/cbc:BaseQuantity)) ) * 10 * 10 * 10) div 10 + 0.00000000001 ) div 100 ) + sum((cac:AllowanceCharge[cbc:ChargeIndicator=true()]/xs:decimal(cbc:Amount))) - sum((cac:AllowanceCharge[cbc:ChargeIndicator=false()]/xs:decimal(cbc:Amount))) ,2 ) -0.01) )
قواعد قريبة
- BR-22 · يجب أن يحمل كل بند في الفاتورة الكمية المفوترة (BT-129)
- BR-24 · يجب أن يحمل كل بند صافي مبلغ البند (BT-131)
- BR-26 · يجب أن يحمل كل بند صافي سعر الصنف (BT-146)
- BR-41 · يجب أن يحمل كل خصم على مستوى البند مبلغًا (BT-136)
- BR-43 · يجب أن تحمل كل رسوم إضافية على مستوى البند مبلغًا (BT-141)
- BR-CO-10 · إجمالي مبالغ البنود يجب أن يساوي مجموع صافي البنود
افحص فاتورتك على قواعد الهيئة
الصق الـ XML وتشوف كل الأخطاء والتحذيرات، والفحص يصير في متصفحك وما ترسل الفاتورة لأي مكان.
افحص فاتورة أو جرّب ماثل