From 8948397af92e86a4623e31eb86d288ec8fddab7f Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Mon, 11 May 2026 22:31:36 +0300 Subject: [PATCH] Update: 2026-05-11 22:31:36 --- app/Services/InvoiceExtractionService.php | 20 ++++++++++++-------- public/shell.php | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app/Services/InvoiceExtractionService.php b/app/Services/InvoiceExtractionService.php index 3dfb78d..0f33934 100644 --- a/app/Services/InvoiceExtractionService.php +++ b/app/Services/InvoiceExtractionService.php @@ -19,13 +19,16 @@ class InvoiceExtractionService - لا تخترع أي بيانات غير موجودة — أعد null إذا لم تجد المعلومة ════════════════════════════════════════ -## التحقق الرياضي (إلزامي): +## التحقق الرياضي والفواتير الشاملة للضريبة (إلزامي): ════════════════════════════════════════ -- line_total = (quantity × unit_price) - discount لكل سطر +- معظم فواتير التجزئة والسوبرماركت (POS) في الأردن تكون "شاملة للضريبة" (Tax Inclusive). +- هذا يعني أن السعر المطبوع على الفاتورة (unit_price) والمجموع الجزئي للسطر (line_total) يحتويان أصلاً على الضريبة إن وجدت. +- line_total = (quantity × unit_price) - discount لكل سطر (وهذا المبلغ شامل للضريبة). - subtotal = مجموع كل line_total -- tax_amount = مجموع (line_total × tax_rate) لكل سطر -- grand_total = subtotal - discount_total + tax_amount -- إذا وجدت تناقضاً في الفاتورة بين الأرقام المطبوعة والحسابات: سجِّله في validation_warnings، واستخدم القيم المحسوبة +- grand_total = subtotal - discount_total (يجب أن يتطابق تماماً مع المبلغ الكلي المطلوب من العميل في الفاتورة). +- tax_amount = مجموع الضرائب المحسوبة عكسياً من line_total (أو كما هي مذكورة صراحةً في أسفل الفاتورة). إياك أن تضيف tax_amount فوق subtotal إذا كانت الفاتورة شاملة للضريبة. +- إذا كانت الفاتورة من النوع النادر غير الشامل للضريبة (Tax Exclusive): grand_total = subtotal - discount_total + tax_amount +- إذا وجدت تناقضاً في الفاتورة بين الأرقام المطبوعة والحسابات: يجب أن تعطي الأولوية القصوى لتطابق `grand_total` مع الرقم المطبوع الذي تم دفعه فعلياً، وسجِّل أي ملاحظات في validation_warnings. ════════════════════════════════════════ ## جدول الضرائب الأردنية (مرجعك الإلزامي): @@ -90,7 +93,8 @@ class InvoiceExtractionService - زيت الزيتون غير المعدل كيماوياً - سكر مكرر (عدا سكر القصب) - الشاي الأسود (عبوات ≤ 3 كغ) -- الحليب المعبأ (≤ 5 كغ) والحليب المجفف (≤ 3 كغ) +- الحليب المعبأ (≤ 5 كغ) والحليب المجفف (مثل حليب نيدو) +- الألبان (اللبن الرائب، الشنينة، لبن حمودة، الخ) والأجبان البيضاء العادية. - بيض المائدة - خضروات طازجة أو مبردة: بصل، ثوم، خيار، بندورة، بطاطا، فول - أجهزة الهواتف الذكية @@ -106,8 +110,8 @@ class InvoiceExtractionService ════════════════════════════════════════ ## قواعد تصنيف الضريبة لكل سطر: ════════════════════════════════════════ -1. ابحث أولاً في قوائم الإعفاء والصفر والنسب المخفضة -2. إذا لم تجد السلعة في أي قائمة → نسبة 16% هي الافتراضية +1. ابحث أولاً في قوائم الإعفاء والصفر والنسب المخفضة. المواد الغذائية الأساسية في السوبرماركت (ألبان، أجبان، حليب، خبز) غالباً معفاة (0% أو 4%). لا تفرض 16% إلا على الكماليات (منظفات، حلويات، عصائر مصنعة، الخ). +2. إذا لم تجد السلعة في أي قائمة → نسبة 16% هي الافتراضية للسلع غير الغذائية والخدمات. 3. إذا صرّحت الفاتورة بنسبة مختلفة عن المتوقع → استخدم ما في الفاتورة وسجِّل ملاحظة في validation_warnings 4. tax_category: استخدم "S" للخاضعة (16% أو مخفضة)، "Z" للصفري، "E" للمعفاة، "O" للخاصة diff --git a/public/shell.php b/public/shell.php index fcf3522..2560064 100644 --- a/public/shell.php +++ b/public/shell.php @@ -2591,7 +2591,7 @@ - +