إنشاء عروض أسعار باستخدام n8n لدورة O2C

أنا جديد في n8n وأحاول بناء سير عمل لتوليد عروض الأسعار.

هدفي هو:

  1. استقبال تفاصيل العميل (الاسم والبريد الإلكتروني والخدمة والكمية والسعر)

  2. حساب الإجماليات تلقائياً

  3. توليد رقم عرض السعر

  4. إنشاء عرض سعر بصيغة PDF

  5. إرسال عرض السعر إلى العميل عبر البريد الإلكتروني

حالياً، أنا في حيرة من أمري حول كيفية تكوين عقدة Set ونقل البيانات بين العقد. لا أعرف أين يجب أن أضيف معلومات العميل وكيفية تعيين الحقول بشكل صحيح.

هل يمكن لشخص ما أن يساعدني بخصوص:

  • أي العقد يجب أن أستخدم لكل خطوة؟

  • كيف يجب أن أنظم سير العمل؟

  • كيف يمكنني توليد ملف PDF من بيانات عرض السعر؟

مرحباً @Sifrabasayar_12

يمكنك استخدام هذا الموضوع كنقطة انطلاق

سير العمل المُنشأ يجب أن يفي بمعظم احتياجاتك

ابدأ بشكل البيانات وليس بعقدة PDF. أنشئ عنصر اختبار واحد يحتوي على حقول الفواتير الدقيقة التي تحتاجها: customer_name، customer_email، service، quantity، unit_price، total، و quote_number.

عندما يكون هذا العنصر موجوداً، لن تضطر العقدة التالية سوى إلى تعيين أسماء هذه الحقول إلى خطوة PDF/البريد الإلكتروني. من أين ستدخل تفاصيل العميل الأول إلى n8n: نموذج، أو webhook، أو جدول بيانات، أم عنصر اختبار يدوي؟

أهلاً وسهلاً @Sifrabasayar_12! لإضافة ما قاله @oimrqs_ops - بخصوص خطوة PDF تحديداً، أسهل طريقة في n8n هي استخدام عقدة HTML Template لبناء تخطيط الفاتورة مع الحقول المعينة لديك، ثم توجيه HTML تلك إلى عقدة HTTP Request تستدعي API تحويل PDF مجاني مثل html2pdf.it أو نسخة موزعة ذاتياً من Gotenberg. يمنحك نهج قالب HTML التحكم الكامل على تصميم الفاتورة بدون أي تكلفة ترخيص إضافية. بخصوص رقم الفاتورة، قم بإنشاؤه في عقدة Code باستخدام شيء مثل 'Q-' + Date.now() أو عداد متسلسل مخزن في متغير سير عمل ثابت. بمجرد أن تحصل على PDF كبيانات ثنائية، أرفقه مباشرة في حقل المرفقات في عقدة Gmail باستخدام {{ $binary.data }}.

آي @Sifrabasayar_12، لربط كل شيء معاً بهيكل واضح:
المحفز → Form Trigger أو Webhook (يلتقط اسم العميل والبريد الإلكتروني والخدمة والكمية والسعر)
حساب الإجماليات → عقدة Set: أضف حقل total = {{ $json.quantity * $json.unit_price }}
إنشاء رقم العرض → عقدة Code: return [{ json: { …$input.first().json, quote_number: ‘Q-’ + Date.now() } }]
إنشاء ملف PDF → عقدة HTML لتصميم تخطيط العرض باستخدام {{ $json.customer_name }} وما إلى ذلك، ثم عقدة HTTP Request → html2pdf.it (مجاني، بدون اشتراك) لتحويله إلى ملف PDF ثنائي
إرسال البريد الإلكتروني → عقدة Gmail مع To: {{ $json.customer_email }}، وأرفق الملف الثنائي PDF من العقدة السابقة
الشيء الأساسي لنقل البيانات بين العقد: كل عقدة تستقبل $json من العقدة السابقة لها. استخدم عقدة Set لإضافة أو إعادة تسمية الحقول، وستكون متاحة في كل عقدة لاحقة. بمجرد أن يكون لديك عنصر الاختبار بجميع الحقول المعينة بشكل صحيح في الخطوة 1، يقوم الباقي فقط بتعيين تلك أسماء الحقول نفسها عبر الحقول.

مرحباً @Sifrabasayar_12!

إليك هيكل عقدة نظيف لهذا:

  1. مشغل نموذج n8n لجمع اسم العميل والبريد الإلكتروني والخدمة والكمية والسعر
  2. عقدة رمز لحساب الإجماليات وإنشاء رقم عرض أسعار: "Q-" + Date.now()
  3. بالنسبة لملف PDF - الطريق الأسهل والأكثر ودية للمبتدئين هي Google Docs: أنشئ مستند نموذجي يحتوي على عناصر نائبة مثل {{customer_name}} و {{total}}، واستخدم عقدة Google Docs (عملية استبدال النص) لملؤها، ثم قم بالتصدير إلى PDF عبر عقدة Google Drive (عملية التنزيل، اضبط صيغة الإخراج على PDF)
  4. عقدة Gmail لإرسال البريد الإلكتروني مع ملف PDF المُصدَّر كمرفق

ابدأ باختبار الخطوات 1 و 2 فقط أولاً للتأكد من أن حقولك مشكلة بشكل صحيح قبل إضافة خطوة PDF.