"""
Form Schemas — SCM Module.

اسکیماهای فرم برای ماژول خرید و تدارکات.
"""

VENDOR_FORM = {
    "id": "scm_vendor_form",
    "title": "فرم اطلاعات تأمین‌کننده",
    "sections": [
        {
            "id": "basic",
            "title": "اطلاعات پایه",
            "fields": [
                {"name": "vendor_code", "label": "کد تأمین‌کننده", "type": "text", "required": True, "max_length": 50},
                {"name": "vendor_name", "label": "نام تأمین‌کننده", "type": "text", "required": True, "max_length": 255},
                {"name": "vendor_name_en", "label": "نام (انگلیسی)", "type": "text", "max_length": 255},
                {"name": "vendor_type", "label": "نوع", "type": "select", "required": True, "options": [
                    {"value": "MANUFACTURER", "label": "تولیدکننده"},
                    {"value": "DISTRIBUTOR", "label": "توزیع‌کننده"},
                    {"value": "SERVICE_PROVIDER", "label": "خدمات‌دهنده"},
                    {"value": "CONTRACTOR", "label": "پیمانکار"},
                    {"value": "OTHER", "label": "سایر"},
                ]},
                {"name": "category", "label": "دسته‌بندی", "type": "lookup", "lookup_endpoint": "/api/v1/scm/vendor-categories/"},
            ],
        },
        {
            "id": "legal",
            "title": "اطلاعات حقوقی",
            "fields": [
                {"name": "national_id", "label": "شناسه ملی / کد ملی", "type": "text", "max_length": 20},
                {"name": "economic_code", "label": "کد اقتصادی", "type": "text", "max_length": 20},
                {"name": "registration_number", "label": "شماره ثبت", "type": "text", "max_length": 50},
            ],
        },
        {
            "id": "contact",
            "title": "اطلاعات تماس",
            "fields": [
                {"name": "phone", "label": "تلفن", "type": "text", "max_length": 20},
                {"name": "fax", "label": "فکس", "type": "text", "max_length": 20},
                {"name": "email", "label": "ایمیل", "type": "email", "max_length": 254},
                {"name": "website", "label": "وب‌سایت", "type": "url", "max_length": 500},
            ],
        },
        {
            "id": "financial",
            "title": "اطلاعات مالی",
            "fields": [
                {"name": "payment_terms_days", "label": "مهلت پرداخت (روز)", "type": "number", "min": 0},
                {"name": "credit_limit", "label": "سقف اعتبار", "type": "currency"},
                {"name": "currency_code", "label": "ارز", "type": "text", "default": "IRR", "max_length": 10},
            ],
        },
        {
            "id": "other",
            "title": "سایر",
            "fields": [
                {"name": "representative_employee_id", "label": "نماینده سازمان", "type": "lookup", "lookup_endpoint": "/api/hrm/v1/employees/"},
                {"name": "notes", "label": "یادداشت", "type": "textarea"},
            ],
        },
    ],
}

PR_FORM = {
    "id": "scm_pr_form",
    "title": "فرم درخواست خرید",
    "sections": [
        {
            "id": "header",
            "title": "اطلاعات درخواست",
            "fields": [
                {"name": "pr_number", "label": "شماره درخواست", "type": "text", "required": True, "max_length": 50},
                {"name": "title", "label": "عنوان", "type": "text", "required": True, "max_length": 255},
                {"name": "description", "label": "توضیحات", "type": "textarea"},
                {"name": "priority", "label": "اولویت", "type": "select", "default": "NORMAL", "options": [
                    {"value": "LOW", "label": "کم"},
                    {"value": "NORMAL", "label": "عادی"},
                    {"value": "HIGH", "label": "زیاد"},
                    {"value": "URGENT", "label": "فوری"},
                ]},
                {"name": "required_date", "label": "تاریخ نیاز", "type": "date_jalali"},
                {"name": "currency_code", "label": "ارز", "type": "text", "default": "IRR", "max_length": 10},
                {"name": "notes", "label": "یادداشت", "type": "textarea"},
            ],
        },
        {
            "id": "lines",
            "title": "آیتم‌های درخواست",
            "type": "table_input",
            "fields": [
                {"name": "item_code", "label": "کد کالا", "type": "text", "max_length": 50},
                {"name": "item_name", "label": "نام کالا", "type": "text", "required": True, "max_length": 255},
                {"name": "quantity", "label": "مقدار", "type": "number", "required": True, "min": 0},
                {"name": "uom_code", "label": "واحد", "type": "text", "max_length": 20},
                {"name": "estimated_unit_price", "label": "قیمت تخمینی واحد", "type": "currency"},
                {"name": "required_date", "label": "تاریخ نیاز", "type": "date_jalali"},
                {"name": "warehouse_name", "label": "انبار", "type": "text"},
                {"name": "notes", "label": "یادداشت", "type": "text"},
            ],
        },
    ],
}

PO_FORM = {
    "id": "scm_po_form",
    "title": "فرم سفارش خرید",
    "sections": [
        {
            "id": "header",
            "title": "اطلاعات سفارش",
            "fields": [
                {"name": "po_number", "label": "شماره سفارش", "type": "text", "required": True, "max_length": 50},
                {"name": "title", "label": "عنوان", "type": "text", "max_length": 255},
                {"name": "description", "label": "توضیحات", "type": "textarea"},
                {"name": "priority", "label": "اولویت", "type": "select", "default": "NORMAL", "options": [
                    {"value": "LOW", "label": "کم"},
                    {"value": "NORMAL", "label": "عادی"},
                    {"value": "HIGH", "label": "زیاد"},
                    {"value": "URGENT", "label": "فوری"},
                ]},
                {"name": "vendor_id", "label": "تأمین‌کننده", "type": "lookup", "required": True, "lookup_endpoint": "/api/v1/scm/vendors/"},
                {"name": "expected_delivery_date", "label": "تاریخ تحویل مورد انتظار", "type": "date_jalali"},
                {"name": "currency_code", "label": "ارز", "type": "text", "default": "IRR", "max_length": 10},
            ],
        },
        {
            "id": "terms",
            "title": "شرایط",
            "fields": [
                {"name": "payment_terms", "label": "شرایط پرداخت", "type": "textarea", "max_length": 500},
                {"name": "delivery_terms", "label": "شرایط تحویل", "type": "textarea", "max_length": 500},
                {"name": "shipping_address", "label": "آدرس تحویل", "type": "textarea"},
                {"name": "notes", "label": "یادداشت", "type": "textarea"},
            ],
        },
        {
            "id": "lines",
            "title": "آیتم‌های سفارش",
            "type": "table_input",
            "fields": [
                {"name": "item_code", "label": "کد کالا", "type": "text", "max_length": 50},
                {"name": "item_name", "label": "نام کالا", "type": "text", "required": True, "max_length": 255},
                {"name": "quantity", "label": "مقدار", "type": "number", "required": True, "min": 0},
                {"name": "uom_code", "label": "واحد", "type": "text", "max_length": 20},
                {"name": "unit_price", "label": "قیمت واحد", "type": "currency", "required": True},
                {"name": "discount_percent", "label": "تخفیف (%)", "type": "number", "min": 0, "max": 100},
                {"name": "tax_percent", "label": "مالیات (%)", "type": "number", "min": 0},
                {"name": "warehouse_name", "label": "انبار مقصد", "type": "text"},
                {"name": "required_date", "label": "تاریخ نیاز", "type": "date_jalali"},
                {"name": "notes", "label": "یادداشت", "type": "text"},
            ],
        },
    ],
}

GR_FORM = {
    "id": "scm_gr_form",
    "title": "فرم رسید کالا",
    "sections": [
        {
            "id": "header",
            "title": "اطلاعات رسید",
            "fields": [
                {"name": "gr_number", "label": "شماره رسید", "type": "text", "required": True, "max_length": 50},
                {"name": "po_id", "label": "سفارش خرید", "type": "lookup", "lookup_endpoint": "/api/v1/scm/purchase-orders/"},
                {"name": "vendor_id", "label": "تأمین‌کننده", "type": "lookup", "lookup_endpoint": "/api/v1/scm/vendors/"},
                {"name": "receipt_date", "label": "تاریخ رسید", "type": "date_jalali"},
                {"name": "delivery_note_number", "label": "شماره بارنامه", "type": "text", "max_length": 100},
                {"name": "transporter", "label": "حمل‌کننده", "type": "text", "max_length": 255},
                {"name": "currency_code", "label": "ارز", "type": "text", "default": "IRR"},
                {"name": "notes", "label": "یادداشت", "type": "textarea"},
            ],
        },
        {
            "id": "lines",
            "title": "آیتم‌های رسید",
            "type": "table_input",
            "fields": [
                {"name": "item_code", "label": "کد کالا", "type": "text"},
                {"name": "item_name", "label": "نام کالا", "type": "text", "required": True},
                {"name": "ordered_quantity", "label": "مقدار سفارش", "type": "number"},
                {"name": "received_quantity", "label": "مقدار دریافتی", "type": "number", "required": True},
                {"name": "accepted_quantity", "label": "مقدار پذیرفته", "type": "number", "required": True},
                {"name": "rejected_quantity", "label": "مقدار مردود", "type": "number"},
                {"name": "uom_code", "label": "واحد", "type": "text"},
                {"name": "unit_cost", "label": "قیمت واحد", "type": "currency"},
                {"name": "warehouse_name", "label": "انبار", "type": "text"},
                {"name": "batch_number", "label": "شماره بچ", "type": "text"},
                {"name": "inspection_required", "label": "نیاز به بازرسی", "type": "checkbox"},
            ],
        },
    ],
}
