برمجةحماية الدفعالتفاصيل
- التعديلات ضمن الباقة مجانية.
- إذا لم تردّ خلال 3 أيام من التسليم، يُقبل العمل تلقائيًا.
يُحجز المبلغ عند الدفع ولا يُحوَّل إلا بعد قبولك العمل.

مثال على النتيجة
دمج ملفات المبيعات الشهرية لـ 9 متاجر في تقرير Excel واحد
طريقة التشغيل
python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO المجلد: sales/2026-10، عُثر على 9 ملفات
2026-11-02 09:14:03 INFO shop-01.csv: 1,284 صفًا
2026-11-02 09:14:04 INFO shop-02.xlsx: 967 صفًا
2026-11-02 09:14:04 WARN shop-07.csv: تُخطّيت 3 صفوف بلا سعر (الأسطر 88، 412، 913)
2026-11-02 09:14:05 INFO تم: 10,412 صفًا -> report-2026-10.xlsx (الورقتان «المبيعات» و«الإجماليات»)
إعدادات لا كود
أسماء أعمدة كل متجر موجودة في settings.ini، فالمتجر الجديد أو العمود الذي تغيّر اسمه يعني سطرًا واحدًا هناك:
[columns]
date = التاريخ, تاريخ البيع, اليوم
product = المنتج, الصنف, الاسم
quantity = الكمية, العدد, قطع
price = السعر, سعر الوحدة
جزء من الكود
def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
"""يقرأ ملف متجر واحد ويمنح أعمدته أسماء أعمدة التقرير."""
table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
renamed = {}
for name, variants in columns.items():
found = next((c for c in table.columns if c.strip() in variants), None)
if found is None:
raise ReportError(f"{path.name}: لا يوجد عمود لـ «{name}» (جرى البحث عن: {', '.join(variants)})")
renamed[found] = name
table = table.rename(columns=renamed)[list(columns)]
table["shop"] = path.stem
return table
الملفات: أرشيف ZIP يضم merge_sales.py (310 أسطر)، وsettings.ini، وrequirements.txt، وملف README يشرح تثبيت Python وتشغيل السكربت ومعنى كل رسالة في السجل. يشغّله العميل على كمبيوتره الخاص.
العميل: سلسلة صغيرة من 9 متاجر للأدوات المكتبية؛ يرسل كل متجر مبيعاته الشهرية في ملف CSV أو Excel، بأسماء أعمدة تختلف قليلًا من متجر إلى آخر. المهمة: سكربت واحد يقرأ كل ملف في مجلد، ويوحّد الأعمدة في شكل واحد، ويكتب تقرير Excel واحدًا يضم كل المبيعات وورقة بالإجماليات حسب المتجر.
العميل وجميع التفاصيل افتراضية.
عن هذه الخدمة
إن كنت تحتفظ بالطلبات أو ساعات العمل في جدول بيانات Google، فإن إعداد كل فاتورة يدويًا يعني نسخ العميل والبنود والمجاميع إلى مستند وحفظ ملف PDF. يضيف سكربت Google Apps Script هذا زرًا إلى جدولك: يملأ قالب فاتورتك الخاص في مستندات Google أو جداول بيانات Google ببيانات الصف، ويحفظ ملف PDF بالاسم الذي تريده في مجلد على Drive، ويعيد الرابط إلى الصف. بدءًا من الباقة القياسية يتعامل مع عدة أسطر بنود والترقيم؛ وفي الباقة المميزة يمكنه إرسال كل ملف PDF من Gmail الخاص بك إلى عميلك. المجاميع والضرائب والصياغة تأتي من جدولك وقالبك: يُجري السكربت الحسابات التي تصفها ولا يقدم نصائح ضريبية أو محاسبية، لذا تحقق من الفواتير الأولى. تثبّته وتشغّله في حسابك على Google.
ما المشمول
- ما الذي تحصل عليهأرشيف ZIP يضم كود Apps Script وملف README يوضح كيفية إضافته إلى جدولك وقالبك؛ ويُعرض الكود أيضًا في صفحة الطلب.
- قالبك الخاصتخطيطك وشعارك وصياغتك في مستندات Google أو جداول بيانات Google
- PDF إلى Driveمسمّى بالرقم والعميل والتاريخ، في المجلد الذي تحدده
- رابط في الصفترى الصفوف التي لديها فاتورة بالفعل
- الترقيمبدءًا من الباقة القياسية، يُؤخذ الرقم التالي من جدولك
- كود مقروءمع تعليقات، ليسهل تغيير أي حقل لاحقًا
كيف يعمل
- 1القالبترسل أعمدة الجدول وقالب فاتورتك
- 2الكودنكتب السكربت ودليل تثبيته
- 3جرّبهتنشئ فواتير تجريبية في نسخة من الجدول وتتحقق من الحسابات
- 4التعديلاتتطلب التعديلات ضمن باقتك وترسل أي رسالة خطأ
ما نحتاجه منك
أسماء أعمدة جدولك مع صفين أو ثلاثة ببيانات مختلقة، وقالب فاتورتك (مستند أو جدول من Google، أو ملف PDF لفاتورة ترسلها حاليًا) مع أماكن كل قيمة، وطريقة حساب المجاميع: نسبة الضريبة والخصومات والعملة والتقريب، كما يخبرك محاسبك. طريقة ترقيم الفواتير وتسميتها، ومجلد Drive لملفات PDF، ونص الرسالة إلى العميل للباقة المميزة.
سنسألك:
- عمّ تصدر الفواتير؟
- ما أعمدة الجدول؟
- كيف تبدو فاتورتك؟
- كيف تُحسب المجاميع؟
قارن بين الباقات
| الباقات | الأساسيةفاتورة واحدة في كل مرة16 US$ | القياسيةالفواتير مع الإعدادات33 US$ | المميزةأداة الفوترة67 US$ |
|---|---|---|---|
| مدة التنفيذ | 1 يوم | 2 يوم | 3 أيام |
| التعديلات | 1 | 2 | 3 |
| الكود | حتى 150 سطرًا | حتى 400 سطر | حتى 1,000 سطر |
| ملفات الكود | 1 | حتى 3 | حتى 8 |
| ملف الإعدادات | لا | نعم | نعم |
| رسائل خطأ واضحة وسجل | لا | نعم | نعم |
| خيارات التشغيل ودليل لتشغيله وفق جدول زمني | لا | لا | نعم |
| دليل التثبيت والتشغيل (README) | نعم | نعم | نعم |
| اللغة | Google Apps Script | Google Apps Script | Google Apps Script |
| اطلب الأساسية | اطلب القياسية | اطلب المميزة |
حماية الدفع
تدفع عند الطلب، لكن المبلغ لا يُحوَّل إلا مقابل عمل قبلته.
- سعر ثابتلا يتغير سعر الباقة بعد الدفع.
- المبلغ محجوزعند الدفع، يُحجز المبلغ فقط. ولا يُحوَّل إلى Dleex إلا بعد قبولك العمل.
- فحص قبل التسليمتخضع كل نتيجة لفحص الجودة قبل أن تصل إليك، وتراها في صفحة الطلب قبل قبولها.
- تعديلات مجانيةاطلب تعديلات ضمن متطلبات طلبك بالعدد الذي تسمح به الباقة.
- القبول بعد 3 أيامإذا لم تقبل العمل ولم تطلب تعديلات خلال 3 أيام من التسليم، يُقبل تلقائيًا. وإذا كتبت في محادثة الطلب بعد التسليم، يبقى الطلب قيد الانتظار؛ وبعد ردّنا، قد نعيد بدء مهلة 3 أيام وسنُعلمك بذلك في المحادثة.
- إعادة التنفيذ أو استرداد المبلغ كاملًاإذا لم تطابق النتيجة متطلبات طلبك ولم تُصلحها التعديلات، أو استغرق العمل أكثر من ضعف مدة التنفيذ، فاكتب في محادثة الطلب: سنعيد تنفيذ العمل أو نردّ إليك المبلغ كاملًا.
الأسئلة والأجوبة
هل ستكون الفواتير صحيحة قانونيًا؟
يملأ السكربت ما يحتويه قالبك وجدولك ويحسب بالطريقة التي تصفها. أما ما يجب أن تتضمنه الفاتورة في بلدك فتقرره أنت أو محاسبك؛ لا نقدم نصائح ضريبية أو قانونية.
هل يمكنه إرسال الفواتير بالبريد الإلكتروني؟
في الباقة المميزة نعم: من Gmail الخاص بك إلى العنوان الموجود في الصف، ضمن حد الإرسال اليومي الذي تضعه Google لحسابك. يمكنك إيقاف الإرسال والاكتفاء بحفظ ملفات PDF.
هل يمكنه استقبال المدفوعات أو الربط ببرنامج المحاسبة لديّ؟
لا، إنه يُنشئ ملفات PDF. ويمكن طباعة رابط دفع لديك بالفعل على الفاتورة كنص من جدولك.
هل تحصلون على وصول إلى Drive الخاص بي؟
لا. تضيف الكود إلى جدولك الخاص وتمنحه الصلاحيات بنفسك. لا نسجّل الدخول إلى حسابك على Google أبدًا.
لم تجد إجابتك؟


