كيفية إرسال تقرير لكل مورد مفلتر بالمورد على إيميله المسجَّل تلقائيًا؟

Viewed 27

كيفيه ارسال تقرير للموردين برصيد اصناف كل مورد بحيث التقرير يفلتر اوتوماتيك لكل مورد ويتبعت لكل مورد علي الايميل المسجل داخل سجل المورد ملحوظة تم عمل التقرير وتمك اضافه الايميل في سجل المورد الباقي الربط فقط والفلتر والارسال لكلا مورد علي حدة

2 Answers

ده بالظبط اللي بتعمله المهام المجدولة (Task Schedule) لما يكون نوعها تقرير بمدخلات (Parameterized Report)، عن طريق جدول المدخلات (Parameters).

الفكرة: كل سطر في جدول المدخلات بيمثّل مورد واحد، وفيه جزئين:

  1. المُرسَل إليه (sendTo): تحطّ فيه المورد نفسه. النظام بيرسل التقرير على الإيميل المسجّل في سجل هذا المورد تلقائيًا. (الحقل ده بيقبل: مستخدم، موظف، عميل، مورد، شريك، جهة ذات صلة — فالموردين مدعومين مباشرة.)
  2. مُدخَل الفلترة (p1 … p15): تحطّ فيه مُدخَل المورد الموجود في التقرير وتربطه بنفس المورد، فيطلع التقرير مفلتر على هذا المورد فقط.

وبكده لما المهمة تشتغل، بتلفّ على كل سطر، تشغّل التقرير بقيم مدخلات السطر، وتبعته على إيميل المورد الموجود في نفس السطر — كل مورد لوحده.

مثال إعداد

{
    "code": "10-SUPPLIER-ITEM-BALANCE",
    "name1": "رصيد أصناف الموردين",
    "name2": "رصيد أصناف الموردين",
    "scheduleType": "ParameterizedReport",
    "reportDefinition": "<كود تعريف التقرير الجاهز عندك>",
    "repOutputFormat": "PDF",
    "emailSubjectTemplate": "رصيد الأصناف الخاص بكم",
    "templates": {
        "emailTemplate": "تحية طيبة، مرفق تقرير برصيد الأصناف الخاص بكم."
    },
    "attachmentNameTemplate": "SupplierItemBalance",
    "scheduleInfo": { "timeMinute": "0", "timeHour": "8" },
    "weekly": true,
    "runOnAllWeekDays": true,
    "hourInfo": { "runOnHour0800": true },
    "sendAsMail": true,
    "params": [
        {
            "sendTo": { "entityType": "Supplier", "code": "S-001" },
            "p1": {
                "paramId": "<معرّف مُدخَل المورد في التقرير>",
                "refValue": { "entityType": "Supplier", "code": "S-001" },
                "paramType": "Reference"
            }
        },
        {
            "sendTo": { "entityType": "Supplier", "code": "S-002" },
            "p1": {
                "paramId": "<معرّف مُدخَل المورد في التقرير>",
                "refValue": { "entityType": "Supplier", "code": "S-002" },
                "paramType": "Reference"
            }
        }
    ]
}

أهم النقاط في المثال:

  • sendTo فيه المورد ⇒ التقرير يروح على الإيميل المسجّل في سجل المورد ده.
  • p1 فيه مُدخَل المورد في التقرير، و**refValue** فيه نفس المورد ⇒ التقرير يطلع مفلتر على هذا المورد.
  • paramId لازم يطابق المعرّف الفعلي لمُدخَل المورد في تعريف التقرير عندك.
  • لو محتاج مدخلات إضافية (تاريخ، مخزن، إلخ) ضيفها في p2, p3 … بنفس الشكل، ونوع المُدخَل (paramType) بيكون Date أو Boolean أو Decimal أو Reference … حسب نوع المُدخَل.
  • للقيم الزمنية الديناميكية تقدر تستخدم تعبيرات زي $todayMinusDays(1) في paramValue.

ملاحظة: لو عايز الإرسال يكون إشعار داخل النظام بدل (أو مع) الإيميل، فعّل sendAsNotification. وللتنسيق تقدر تغيّر repOutputFormat (مثلاً XLSX أو HTML).

بديل لو الموردين كُثُر أو متغيرين

بدل ما تكتب سطر لكل مورد يدويًا، تقدر تسيب جدول المدخلات (Parameters) فاضي وتستخدم استعلام (Query) يرجّع صفًا لكل مورد، وتربط أعمدة الاستعلام بمدخلات التقرير (ومن ضمنها عمود sendto للمورد). بهذا الشكل تتعامل المهمة مع كل الموردين تلقائيًا من غير تعديل يدوي في كل مرة. الطريقة دي مناسبة لما يكون عندك قائمة موردين كبيرة أو بتتغير باستمرار.

هي كدا اشتغلت تما بس الموردين يتم اضافتهم يدويا محتاجين Quary
يبعت للموردين اوتوماتيك زي م حضرتك زكرت سابقا في الشرح

بديل لو الموردين كُثُر أو متغيرين
بدل ما تكتب سطر لكل مورد يدويًا، تقدر تسيب جدول المدخلات (Parameters) فاضي وتستخدم استعلام (Query) يرجّع صفًا لكل مورد، وتربط أعمدة الاستعلام بمدخلات التقرير (ومن ضمنها عمود sendto للمورد). بهذا الشكل تتعامل المهمة مع كل الموردين تلقائيًا من غير تعديل يدوي في كل مرة. الطريقة دي مناسبة لما يكون عندك قائمة موردين كبيرة أو بتتغير باستمرار.

الquery هيتم اضافتها فين وهل فيه اسم عنصر
وعاوزين ال الكويرى بتاعه ارسال لكل الموردين ولو امكن صورة نحط كل حاجه فين وشكرا يا هندسة