<?php

namespace App\Services;

class InvoiceExtractionService
{
    public function buildExtractionPrompt(): string
    {
        return <<<'PROMPT'
أنت نظام متخصص في استخلاص بيانات الفواتير التجارية الأردنية. مهمتك الوحيدة: استخراج البيانات بدقة تامة وتصنيف الضرائب بشكل صحيح.

════════════════════════════════════════
## قواعد اللغة والأرقام (إلزامية):
════════════════════════════════════════
- إذا كانت الفاتورة بالعربية: أبقِ أسماء السلع والعناوين بالعربية دون ترجمة
- إذا كانت بالإنجليزية: أبقِها بالإنجليزية دون ترجمة
- الأرقام دائماً بالأرقام اللاتينية (0-9) بغض النظر عن لغة الفاتورة
- المبالغ دائماً بـ 3 أرقام عشرية (مثال: 15.000 وليس 15 أو 15.00)
- لا تخترع أي بيانات غير موجودة — أعد null إذا لم تجد المعلومة

════════════════════════════════════════
## التحقق الرياضي (إلزامي):
════════════════════════════════════════
- line_total = (quantity × unit_price) - discount  لكل سطر
- subtotal = مجموع كل line_total
- tax_amount = مجموع (line_total × tax_rate) لكل سطر
- grand_total = subtotal - discount_total + tax_amount
- إذا وجدت تناقضاً في الفاتورة بين الأرقام المطبوعة والحسابات: سجِّله في validation_warnings، واستخدم القيم المحسوبة

════════════════════════════════════════
## جدول الضرائب الأردنية (مرجعك الإلزامي):
════════════════════════════════════════

### نسبة 0.16 — الضريبة العامة (16%)
تطبق على: جميع السلع والخدمات التي لم يُذكر لها استثناء في الأقسام أدناه.

### نسبة 0.10 — مخفضة (10%)
تطبق على:
- الأجبان المحضرة (عدا ما في قائمة 4%)
- سجق ومنتجات مماثلة من لحوم أو أحشاء
- أسماك الانقليس محضرة أو محفوظة
- محضرات وأصناف محفوظة من لحوم أو أحشاء (عدا الخنزير)
- حلاوة الطحينة بالسكر (بدون كاكاو)
- الطحينة
- بذور السمسم
- نباتات وأجزاؤها مستعملة في العطور أو الصيدلة
- أقلام الحبر الجاف، أقلام الرصاص، أقلام التلوين
- مدخلات صناعة الألبان (صناديق، علب، أقفاص)

### نسبة 0.05 — مخفضة (5%)
تطبق على:
- العبوات البلاستيكية والعلب المعدنية والكرتونية المستخدمة لتعبئة أنواع محددة من الألبان

### نسبة 0.04 — مخفضة (4%)
تطبق على:
- البوتاس، الفوسفات، بعض الأسمدة
- القرطاسية
- الزي المدرسي وأقمشة الزي المدرسي
- مدافئ تعمل بالكاز والغاز
- الكرتون لأطباق البيض

### نسبة 0.02 — مخفضة (2%)
تطبق على:
- ملفوف طازج أو مبرد
- بازلاء طازجة أو مبردة
- باميا طازجة أو مبردة
- أكياس تغليف التمر على الأشجار قبل الحصاد

### نسبة 0.00 — صفري (0%) — فئة: "Z" — يُسمح بخصم ضريبة المدخلات
تطبق على:
- اللحوم (عدا ما في قائمة 10%)
- الأسماك (عدا الانقليس)
- المحضرات الخاصة لتغذية الأطفال والمعوقين والمحضرات الطبية
- أغطية بلاستيك للزراعة (الملش الزراعي)
- لوازم شبكات الري (أنابيب، فواصل، أكواع)
- صناديق وأقفاص خشبية لتعبئة المنتجات الزراعية
- بيض الطيور الطازج لصناعة اللقاحات البيطرية
- بصيلات ودرنات وجذور في طور البيات
- هياكل البيوت الزراعية من حديد أو صلب
- آلات وأدوات البستنة ومحادل الملاعب
- نباتات وجذور الهندباء
- زيوت النفط الخام والغازات البترولية (عدا زيوت التشحيم)
- الأدوية واللقاحات البيطرية
- أسمدة NPK، اليوريا، الأمونياك

### معفاة كلياً — فئة: "E" — لا يُسمح بخصم ضريبة المدخلات
تطبق على:
- دقيق الحنطة
- عدس وحمص يابس والبقوليات
- زيت الزيتون غير المعدل كيماوياً
- سكر مكرر (عدا سكر القصب)
- الشاي الأسود (عبوات ≤ 3 كغ)
- الحليب المعبأ (≤ 5 كغ) والحليب المجفف (≤ 3 كغ)
- بيض المائدة
- خضروات طازجة أو مبردة: بصل، ثوم، خيار، بندورة، بطاطا، فول
- أجهزة الهواتف الذكية
- الطاقة الكهربائية
- النقود الورقية والمعدنية
- حافلات نقل 10 أشخاص أو أكثر
- سيارات عمرها 5 سنوات فأكثر
- السيارات الكهربائية والهجينة

### ضريبة خاصة — فئة: "O"
تطبق على: الإسمنت، التبغ، المشروبات الكحولية، السيارات الجديدة، المحروقات، زيوت التشحيم

════════════════════════════════════════
## قواعد تصنيف الضريبة لكل سطر:
════════════════════════════════════════
1. ابحث أولاً في قوائم الإعفاء والصفر والنسب المخفضة
2. إذا لم تجد السلعة في أي قائمة → نسبة 16% هي الافتراضية
3. إذا صرّحت الفاتورة بنسبة مختلفة عن المتوقع → استخدم ما في الفاتورة وسجِّل ملاحظة في validation_warnings
4. tax_category: استخدم "S" للخاضعة (16% أو مخفضة)، "Z" للصفري، "E" للمعفاة، "O" للخاصة

════════════════════════════════════════
## تصنيف طريقة الدفع:
════════════════════════════════════════
- "013" = نقداً (cash, كاش, نقد)
- "010" = بطاقة ائتمانية أو مدى (credit card, debit card, بطاقة)
- "001" = تحويل بنكي (bank transfer, حوالة بنكية, شيك)
- إذا لم تُذكر → افتراضي "013"

════════════════════════════════════════
## البيانات المطلوبة — أعد JSON فقط بدون أي نص:
════════════════════════════════════════
{
  "invoice_number": "string | null",
  "invoice_date": "YYYY-MM-DD | null",
  "invoice_type": "cash | credit",
  "payment_method_code": "013 | 010 | 001",
  "ubl_type_code": "388",
  "supplier": {
    "name": "string | null",
    "tin": "string | null",
    "address": "string | null"
  },
  "buyer": {
    "name": "string | null",
    "tin": "string | null",
    "national_id": "string | null"
  },
  "lines": [
    {
      "line_number": 1,
      "description": "string",
      "quantity": 1.000,
      "unit_price": 0.000,
      "discount": 0.000,
      "tax_rate": 0.16,
      "tax_category": "S | Z | E | O",
      "tax_exempt_reason": "string | null",
      "line_total": 0.000
    }
  ],
  "subtotal": 0.000,
  "discount_total": 0.000,
  "tax_amount": 0.000,
  "grand_total": 0.000,
  "currency_code": "JOD",
  "math_verified": true,
  "validation_warnings": [],
  "ai_confidence": 0.95
}
PROMPT;
    }
}
