Update: 2026-06-14 04:27:17

This commit is contained in:
Hamza-Ayed
2026-06-14 04:27:17 +03:00
parent 55970712cc
commit 2645ed0cf1
9 changed files with 1394 additions and 48 deletions

764
contract.html Normal file
View File

@@ -0,0 +1,764 @@
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>مولد ومطبع عقد شراكة Siro القانوني</title>
<!-- Google Fonts: Cairo (for UI) & Amiri (for Contract text to give a highly formal legal look) -->
<link href="https://fonts.googleapis.com/css2?family=Amiri:ital,wght@0,400;0,700;1,400&family=Cairo:wght@300;400;600;700;800&display=swap" rel="stylesheet">
<!-- Tailwind CSS for modern fluid interface -->
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
fontFamily: {
sans: ['Cairo', 'sans-serif'],
serif: ['Amiri', 'serif'],
},
colors: {
legal: {
800: '#1e293b', // Deep Slate
900: '#0f172a', // Near Black
gold: '#c5a880', // Premium Muted Gold for accents
goldHover: '#b3956d'
}
}
}
}
}
</script>
<style>
/* Specific Styles for UI & Print layout */
body {
background-color: #f1f5f9;
}
/* Paper Mockup (A4 Ratio styling on desktop screen) */
.paper-sheet {
background: #ffffff;
box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
position: relative;
transition: all 0.3s ease;
}
/* Highlighting dynamic fields with a premium gold glow on focus */
.highlight-field {
border-bottom: 2px dashed #c5a880;
color: #1e293b;
font-weight: 700;
padding: 0 4px;
transition: all 0.2s ease;
background-color: rgba(197, 168, 128, 0.08);
border-radius: 2px;
}
.highlight-field:empty::before {
content: "ـــــــــــــــــــــــــــــــــ";
color: #94a3b8;
font-weight: 300;
}
/* Page break styling */
.page-break {
border-top: 2px dashed #cbd5e1;
margin: 2rem 0;
height: 1px;
}
/* Print CSS Configuration */
@media print {
body {
background: #ffffff !important;
color: #000000 !important;
padding: 0 !important;
margin: 0 !important;
}
.no-print {
display: none !important;
}
/* Break layout grid constraints on print */
.grid, .max-w-7xl, .p-4, .md\:p-6, .lg\:grid-cols-12 {
display: block !important;
width: 100% !important;
max-width: 100% !important;
padding: 0 !important;
margin: 0 !important;
}
main, .lg\:col-span-8 {
width: 100% !important;
max-width: 100% !important;
display: block !important;
padding: 0 !important;
margin: 0 !important;
}
.print-page, .paper-sheet {
border: none !important;
box-shadow: none !important;
padding: 0 !important;
margin: 0 !important;
width: 100% !important;
max-width: 100% !important;
height: auto !important;
background: transparent !important;
display: block !important;
}
/* Styling page borders and formal elements on real print */
.contract-container {
border: 1.5px solid #1e293b !important;
padding: 8mm 10mm !important;
min-height: auto !important;
font-size: 8.5pt !important;
line-height: 1.35 !important;
}
.contract-container p,
.contract-container ol,
.contract-container ul,
.contract-container table {
margin-bottom: 0.2rem !important;
}
.contract-container li {
margin-bottom: 0.1rem !important;
}
.contract-container h3,
.contract-container h4 {
margin-top: 0.3rem !important;
margin-bottom: 0.15rem !important;
}
.official-header {
padding-bottom: 0.25rem !important;
margin-bottom: 0.25rem !important;
border-bottom-width: 1.5px !important;
}
.official-header img {
height: 3.5rem !important;
margin-bottom: 0.15rem !important;
}
.official-header h1 {
font-size: 1.25rem !important;
margin-bottom: 0 !important;
}
.official-header p {
font-size: 0.85rem !important;
margin-bottom: 0 !important;
}
.official-header .flex {
margin-top: 0.15rem !important;
}
.contract-container table {
font-size: 7.5pt !important;
}
.contract-container td, .contract-container th {
padding: 1.5px 3px !important;
}
.signature-section {
margin-top: 1rem !important;
}
.signature-section .space-y-8 > :not([hidden]) ~ :not([hidden]) {
margin-top: 0.75rem !important;
}
.witness-container {
display: flex !important;
flex-direction: row !important;
gap: 1.5rem !important;
width: 100% !important;
margin-top: 0.5rem !important;
}
.witness-box {
flex: 1 !important;
width: 50% !important;
padding: 6px 10px !important;
margin: 0 !important;
border-radius: 6px !important;
}
.page-break {
display: none !important;
}
.contract-container p,
.contract-container ol,
.contract-container ul,
.contract-container li,
.contract-container tr,
.contract-container .witness-box {
page-break-inside: avoid !important;
break-inside: avoid !important;
}
.contract-container h3,
.contract-container h4,
.contract-container h5 {
page-break-after: avoid !important;
break-after: avoid !important;
}
@page {
size: A4;
margin: 10mm 10mm;
}
/* Force exact colors in print mode */
.table-header-print {
background-color: #f1f5f9 !important;
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}
}
</style>
</head>
<body class="font-sans text-slate-800 antialiased min-h-screen flex flex-col">
<!-- Top Navbar (hidden on print) -->
<header class="bg-legal-900 text-white py-4 px-6 shadow-md border-b border-legal-gold/20 no-print sticky top-0 z-50">
<div class="max-w-7xl mx-auto flex flex-col md:flex-row justify-between items-center gap-4">
<div class="flex items-center gap-3">
<!-- Siro Stylized Logo -->
<div class="bg-gradient-to-tr from-legal-gold to-amber-500 p-2.5 rounded-xl shadow-inner">
<svg class="w-6 h-6 text-legal-900" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M9 20l-5.447-2.724A1 1 0 013 16.382V5.618a1 1 0 011.447-.894L9 7m0 13l6-3m-6 3V7m6 10l4.553 2.276A1 1 0 0021 18.382V7.618a1 1 0 00-.553-.894L15 4m0 13V4m0 0L9 7"></path>
</svg>
</div>
<div>
<h1 class="text-xl font-extrabold tracking-wide flex items-center gap-2">تطبيق <span class="text-legal-gold">سيرو (Siro)</span> للنقل الذكي</h1>
<p class="text-[10px] text-slate-400 font-medium">نظام طباعة وتوليد العقود القانونية التفاعلي المعتمد</p>
</div>
</div>
<div class="flex items-center gap-3">
<button onclick="window.print();" class="bg-legal-gold hover:bg-legal-goldHover text-legal-900 px-6 py-2.5 rounded-lg font-bold shadow-lg shadow-legal-gold/20 flex items-center gap-2 transition-all duration-200 transform active:scale-95">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 17h2a2 2 0 002-2v-4a2 2 0 00-2-2H5a2 2 0 00-2 2v4a2 2 0 002 2h2m2 4h10a2 2 0 002-2v-4a2 2 0 00-2-2H9a2 2 0 00-2 2v4a2 2 0 002 2zm8-12V5a2 2 0 00-2-2H9a2 2 0 00-2 2v4h10z"></path>
</svg>
طباعة العقد وحفظه كـ PDF
</button>
</div>
</div>
</header>
<!-- Main Content Grid -->
<div class="flex-1 max-w-7xl w-full mx-auto p-4 md:p-6 grid grid-cols-1 lg:grid-cols-12 gap-6 items-start">
<!-- Controls Sidebar (hidden on print) -->
<aside class="lg:col-span-4 bg-white p-6 rounded-2xl shadow-sm border border-slate-200 no-print space-y-6">
<div class="border-b border-slate-100 pb-3">
<h2 class="text-lg font-bold text-legal-900 flex items-center gap-2">
<svg class="w-5 h-5 text-legal-gold" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2.5 2.5 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path>
</svg>
لوحة تعبئة بيانات العقد
</h2>
<p class="text-xs text-slate-500 mt-1">تنعكس هذه البيانات فوراً وبشكل منسق داخل العقد الرسمي المقابل.</p>
</div>
<!-- Inputs Sections -->
<div class="space-y-4">
<!-- General Contract Details -->
<div class="bg-slate-50 p-4 rounded-xl space-y-3 border border-slate-100">
<h3 class="text-xs font-bold text-slate-400 uppercase tracking-wider">معلومات العقد العامة</h3>
<div>
<label class="block text-xs text-slate-600 font-semibold mb-1">تاريخ تحرير العقد (ميلادي)</label>
<input type="text" id="input-date" value="14/06/2026م" placeholder="مثال: 14/06/2026م" class="w-full text-sm px-3 py-2 bg-white border border-slate-200 rounded-lg focus:outline-none focus:border-legal-gold focus:ring-1 focus:ring-legal-gold">
</div>
</div>
<!-- Party 1 Details -->
<div class="bg-slate-50 p-4 rounded-xl space-y-3 border border-slate-100">
<h3 class="text-xs font-bold text-slate-400 uppercase tracking-wider">تفاصيل الطرف الأول (المؤسسون)</h3>
<div>
<label class="block text-xs text-slate-600 font-semibold mb-1">الرقم الوطني: حمزة الغويري</label>
<input type="text" id="input-id-1" placeholder="أدخل الرقم الوطني" class="w-full text-sm px-3 py-2 bg-white border border-slate-200 rounded-lg focus:outline-none focus:border-legal-gold">
</div>
<div>
<label class="block text-xs text-slate-600 font-semibold mb-1">الرقم الوطني: فراس مقابلة</label>
<input type="text" id="input-id-2" placeholder="أدخل الرقم الوطني" class="w-full text-sm px-3 py-2 bg-white border border-slate-200 rounded-lg focus:outline-none focus:border-legal-gold">
</div>
</div>
<!-- Party 2 Details -->
<div class="bg-slate-50 p-4 rounded-xl space-y-3 border border-slate-100">
<h3 class="text-xs font-bold text-slate-400 uppercase tracking-wider">تفاصيل الطرف الثاني (المستثمر)</h3>
<div>
<label class="block text-xs text-slate-600 font-semibold mb-1">رقم الهوية / الرقم الوطني: محمد المجفد</label>
<input type="text" id="input-id-3" placeholder="أدخل رقم الهوية أو الرقم الوطني" class="w-full text-sm px-3 py-2 bg-white border border-slate-200 rounded-lg focus:outline-none focus:border-legal-gold">
</div>
</div>
<!-- Profit Sharing & Math Calculator (SUM 100%) -->
<div class="bg-slate-50 p-4 rounded-xl space-y-4 border border-slate-100">
<div class="flex justify-between items-center">
<h3 class="text-xs font-bold text-slate-400 uppercase tracking-wider">حساب وتوزيع نسب الأرباح</h3>
<!-- Indicator -->
<span id="share-indicator" class="text-xs font-bold px-2 py-0.5 rounded-full bg-red-100 text-red-600">
مجموع النسب: <span id="share-sum">0</span>%
</span>
</div>
<div class="space-y-3">
<div>
<label class="block text-xs text-slate-600 font-semibold mb-1">حصة حمزة الغويري (مؤسس أول) %</label>
<input type="number" id="input-share-1" value="45" min="0" max="100" class="w-full text-sm px-3 py-2 bg-white border border-slate-200 rounded-lg focus:outline-none focus:border-legal-gold">
</div>
<div>
<label class="block text-xs text-slate-600 font-semibold mb-1">حصة فراس مقابلة (مؤسس ثاني) %</label>
<input type="number" id="input-share-2" value="45" min="0" max="100" class="w-full text-sm px-3 py-2 bg-white border border-slate-200 rounded-lg focus:outline-none focus:border-legal-gold">
</div>
<div>
<label class="block text-xs text-slate-600 font-semibold mb-1">حصة محمد المجفد (مستثمر) %</label>
<input type="number" id="input-share-3" value="10" min="0" max="100" class="w-full text-sm px-3 py-2 bg-white border border-slate-200 rounded-lg focus:outline-none focus:border-legal-gold">
</div>
</div>
<div id="share-validation-msg" class="text-xs p-2.5 rounded-lg bg-red-50 text-red-700 font-medium leading-relaxed">
⚠️ تنبيه: إجمالي الحصص يجب أن يساوي 100% لتصحيح صياغة العقد قبل اعتماده رسمياً.
</div>
</div>
</div>
<!-- Real-time Instruction Box -->
<div class="p-4 rounded-xl border border-legal-gold/20 bg-legal-900 text-white space-y-2">
<h4 class="text-xs font-bold text-legal-gold flex items-center gap-1.5">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
</svg>
تعليمات طباعة العقد وحفظه:
</h4>
<ul class="text-[11px] text-slate-300 space-y-1.5 list-disc list-inside">
<li>املأ جميع الخانات وسيقوم النظام بتحديثها تلقائياً.</li>
<li>اضغط على زر <b>"طباعة العقد"</b> بالأعلى.</li>
<li>في شاشة الطباعة، اختر حفظ العقد كملف <b>PDF</b>.</li>
<li><b>هام:</b> في خيارات الطباعة المتقدمة بالمتصفح، تأكد من تفعيل <span class="text-legal-gold">"رسومات الخلفية / Background Graphics"</span> وإلغاء خيار <span class="text-legal-gold">"الرؤوس والتذييلات / Headers and Footers"</span> لكي تتم الطباعة بالتصميم الفاخر الخالي من الروابط والصفحات الإضافية.</li>
</ul>
</div>
</aside>
<!-- Document Viewer (A4 Sheet layout) -->
<main class="lg:col-span-8 flex flex-col items-center">
<div class="w-full max-w-[210mm] paper-sheet print-page rounded-2xl border border-slate-200 overflow-hidden mb-8 transition-all duration-300">
<!-- Styled Legal Border Structure -->
<div class="contract-container p-8 md:p-12 lg:p-16 text-slate-900 font-serif text-justify text-base leading-relaxed select-text" id="contract-document">
<!-- Official Header -->
<div class="official-header flex flex-col items-center text-center border-b-2 border-slate-800 pb-6 mb-6">
<!-- Siro Official Logo -->
<div class="mb-4">
<img src="siro_rider/assets/images/logo.png" class="w-20 h-20 mx-auto object-contain rounded-xl" alt="Siro Logo">
</div>
<div class="flex flex-col items-center gap-1 mb-2">
<span class="text-2xl font-bold font-sans tracking-wide text-slate-950">سيرو / Siro</span>
<span class="text-sm border border-slate-800 px-2.5 py-0.5 rounded font-sans font-bold text-slate-800">تطبيق النقل الذكي / Smart Transport Application</span>
</div>
<h1 class="text-xl md:text-2xl font-bold text-slate-950 font-sans tracking-wide mb-1">عقد شراكة واستثمار تجاري لتشغيل تطبيق "سيرو (Siro)"</h1>
<p class="text-lg font-bold text-slate-800 font-sans">في الجمهورية العربية السورية</p>
<div class="w-full flex justify-end items-center text-xs font-sans text-slate-500 mt-4 px-2">
<span><strong>تاريخ التحرير:</strong> <span id="sync-contract-date" class="font-bold text-slate-900">14/06/2026م</span></span>
</div>
</div>
<!-- Intro Section -->
<div class="space-y-6">
<p class="text-lg leading-normal">
تم تحرير هذا العقد وتوثيقه في اليوم الموافق
<span id="sync-text-date" class="highlight-field">14/06/2026م</span> ميلادي، بين كلٍّ من:
</p>
<!-- Parties Section -->
<div class="space-y-4">
<div>
<h3 class="font-sans font-bold text-slate-950 border-r-4 border-legal-gold pr-3 text-base">الطرف الأول (المؤسسون الشريك الإداري والتقني):</h3>
<ol class="list-decimal list-inside pr-4 mt-2 space-y-2">
<li>
<strong>السيد/ حمزة عايد طحيمر الغويري</strong>، أردني الجنسية، يحمل الرقم الوطني
<span id="sync-p1" class="highlight-field"></span>، ويُشار إليه فيما يلي بـ <strong>"الشريك المؤسس الأول"</strong>.
</li>
<li>
<strong>السيد/ فراس قاسم أحمد مقابلة</strong>، أردني الجنسية، يحمل الرقم الوطني
<span id="sync-p2" class="highlight-field"></span>، ويُشار إليه فيما يلي بـ <strong>"الشريك المؤسس الثاني"</strong>.
</li>
</ol>
<p class="text-sm text-slate-500 italic pr-4 mt-1 font-sans">
(ويُشار إليهما مجتمعَيْن بـ <strong>"الطرف الأول"</strong> أو <strong>"الشركاء المؤسسون"</strong>).
</p>
</div>
<div>
<h3 class="font-sans font-bold text-slate-950 border-r-4 border-legal-gold pr-3 text-base">الطرف الثاني (الشريك المستثمر):</h3>
<div class="pr-4 mt-2">
<strong>السيد/ محمد عمر المجفد</strong>، يحمل الرقم الوطني / رقم الهوية
<span id="sync-p3" class="highlight-field"></span>، ويُشار إليه فيما يلي بـ <strong>"الطرف الثاني"</strong> أو <strong>"الشريك المستثمر"</strong>.
</div>
<p class="text-sm text-slate-500 italic pr-4 mt-1 font-sans">
(ويُشار إلى الأطراف الثلاثة مجتمعين بـ <strong>"الشركاء"</strong> أو <strong>"أطراف العقد"</strong>).
</p>
</div>
</div>
<!-- Preamble Section -->
<div>
<h3 class="font-sans font-extrabold text-slate-950 text-lg mb-2">التمهيد</h3>
<div class="space-y-3">
<p>
<strong>حيث إن</strong> الطرف الأول (الشركاء المؤسسون) يملك حصرياً ويطوّر تطبيق الهواتف الذكية المسمى <strong>"سيرو (Siro)"</strong>، وهو منصة تقنية متخصصة في تقديم خدمات النقل الذكي، وتوصيل الركاب، وتسهيل التنقل الحضري؛
<li>موضوع هذا العقد هو تنظيم العلاقة التجارية والاستثمارية بين الأطراف لتشغيل واستغلال تطبيق <strong>"سيرو (Siro)"</strong> تجارياً وخدمياً وتسويقياً.</li>
<li>يقتصر النطاق الجغرافي لهذا العقد حصراً على أراضي <strong>الجمهورية العربية السورية</strong>. ولا يشمل هذا العقد أي سوق أو دولة أخرى يعمل فيها التطبيق أو قد يتوسع إليها مستقبلاً.</li>
<li>لا يجوز توسيع النطاق الجغرافي لهذا العقد إلا بموجب ملحق تعديلي خطّي موقّع من جميع الأطراف.</li>
<li><strong>حق الأولوية في التوسع الدولي:</strong> في حال رغبة الطرف الأول في توسيع النطاق الجغرافي للمشروع وتشغيل تطبيق "سيرو (Siro)" في أي دولة أو سوق خارج الجمهورية العربية السورية، يلتزم الطرف الأول بعرض هذه الفرصة الاستثمارية الجديدة على الطرف الثاني خطياً قبل عرضها على أي طرف ثالث. ويكون للطرف الثاني حق الأولوية (Right of First Refusal) في الاستثمار والمشاركة في السوق الجديد بذات الشروط أو بشروط يتم التوافق عليها، على أن يبدي الطرف الثاني رغبته خطياً خلال مدة لا تتجاوز <strong>أسبوعاً واحداً (7 أيام)</strong> من تاريخ استلام العرض المكتوب، وفي حال انقضاء هذه المدة دون رد أو في حال اعتذاره خطياً، يحق للطرف الأول التعاقد مع مستثمرين آخرين بحرية تامة ودون أي التزام تجاه الطرف الثاني.</li>">
<div>
<h4 class="font-sans font-bold text-slate-950 text-base mb-1">المادة الأولى: نطاق التمهيد</h4>
<p>يُعدّ التمهيد المذكور أعلاه جزءاً لا يتجزأ من هذا العقد، ويُقرأ ويُفسَّر ضمن سياقه.</p>
</div>
<div>
<h4 class="font-sans font-bold text-slate-950 text-base mb-1">المادة الثانية: موضوع العقد والنطاق الجغرافي</h4>
<ol class="list-decimal list-inside space-y-2">
<li>موضوع هذا العقد هو تنظيم العلاقة التجارية والاستثمارية بين الأطراف لتشغيل واستغلال تطبيق <strong>"Siro"</strong> تجارياً وخدمياً وتسويقياً.</li>
<li>يقتصر النطاق الجغرافي لهذا العقد حصراً على أراضي <strong>الجمهورية العربية السورية</strong>. ولا يشمل هذا العقد أي سوق أو دولة أخرى يعمل فيها التطبيق أو قد يتوسع إليها مستقبلاً.</li>
<li>لا يجوز توسيع النطاق الجغرافي لهذا العقد إلا بموجب ملحق تعديلي خطّي موقّع من جميع الأطراف.</li>
<li><strong>حق الأولوية في التوسع الدولي:</strong> في حال رغبة الطرف الأول في توسيع النطاق الجغرافي للمشروع وتشغيل تطبيق Siro في أي دولة أو سوق خارج الجمهورية العربية السورية، يلتزم الطرف الأول بعرض هذه الفرصة الاستثمارية الجديدة على الطرف الثاني خطياً قبل عرضها على أي طرف ثالث. ويكون للطرف الثاني حق الأولوية (Right of First Refusal) في الاستثمار والمشاركة في السوق الجديد بذات الشروط أو بشروط يتم التوافق عليها، على أن يبدي الطرف الثاني رغبته خطياً خلال مدة لا تتجاوز <strong>أسبوعاً واحداً (7 أيام)</strong> من تاريخ استلام العرض المكتوب، وفي حال انقضاء هذه المدة دون رد أو في حال اعتذاره خطياً، يحق للطرف الأول التعاقد مع مستثمرين آخرين بحرية تامة ودون أي التزام تجاه الطرف الثاني.</li>
</ol>
</div>
<div>
<h4 class="font-sans font-bold text-slate-950 text-base mb-1">المادة الثالثة: رأس المال الاستثماري وآلية الدفع</h4>
<ol class="list-decimal list-inside space-y-2">
<li>يلتزم الطرف الثاني بتقديم رأس مال استثماري إجمالي قدره <strong>مائة وثمانون ألف دولار أمريكي (180,000 USD)</strong> لتمويل عمليات إطلاق المشروع وتشغيله في سوريا.</li>
<li>يُسدَّد رأس المال الاستثماري على دفعات مجدولة ومرنة يتم التوافق عليها ودياً بين الأطراف بما يتماشى مع خطة العمل والاحتياجات التشغيلية للمشروع.</li>
<li>تُودع جميع المبالغ والدفعات الاستثمارية في الحساب المصرفي التجاري للشركة في المملكة الأردنية الهاشمية، وذلك بعد إتمام تأسيس وتسجيل الشركة رسمياً وفتح حسابها التجاري في الأردن، لضمان وتسهيل انسياب وحركة الأموال التشغيلية والاستثمارية دخولاً وخروجاً.</li>
</ol>
</div>
<!-- Formally Page break on Print for elegant multi-page layout if printed -->
<div class="page-break"></div>
<div>
<h4 class="font-sans font-bold text-slate-950 text-base mb-1">المادة الرابعة: التزامات الأطراف</h4>
<div class="space-y-4">
<div>
<h5 class="font-bold text-slate-900 text-sm">أولاً: التزامات الطرف الأول (الشركاء المؤسسون)</h5>
<ol class="list-decimal list-inside space-y-1.5 pr-4 mt-1.5">
<li>يتحمل الطرف الأول المسؤولية الكاملة والحصرية عن الجوانب التقنية والفنية والتشغيلية والإدارية للتطبيق، بما يشمل — دون حصر — التطوير البرمجي، وإدارة الخوادم، والصيانة الدورية, وإصلاح الأعطال الفنية، وإدارة فريق العمل التقني.</li>
<li>إصدار التحديثات والتطويرات المستمرة لتطبيقَيْ الراكب والسائق بما يتلاءم مع متطلبات السوق السورية ويضمن تنافسية المنتج.</li>
<li>تقديم تقرير أداء تشغيلي ومالي للطرف الثاني بشكل <strong>شهري</strong> يتضمن: عدد الرحلات المنفذة، عدد السائقين والركاب النشطين، الإيرادات الإجمالية، المصروفات التشغيلية، وصافي الأرباح.</li>
<li>ضمان استمرارية الخدمة وتوفّر التطبيق لمستخدميه بنسبة لا تقل عن <strong>95%</strong> من أيام التشغيل الشهري (باستثناء حالات القوة القاهرة والصيانة المجدولة).</li>
<li>الالتزام بالعمل الفني والتقني المستمر والدؤوب على تحديث وتطوير وصيانة نظام وتطبيقات "سيرو (Siro)" بانتظام، لضمان استقرار الخدمة وتشغيلها بكفاءة عالية وتلبية احتياجات السوق السورية.</li>
</ol>
</div>
<div>
<h5 class="font-bold text-slate-900 text-sm">ثانياً: التزامات الطرف الثاني (الشريك المستثمر)</h5>
<ol class="list-decimal list-inside space-y-1.5 pr-4 mt-1.5">
<li>الالتزام بسداد كامل رأس المال الاستثماري المتفق عليه (180,000 دولار أمريكي) وفق جدول الدفعات المحدد في المادة الثالثة.</li>
<li>المساهمة الفعّالة بخبراته اللوجستية والعلاقاتية لتسهيل العمل التجاري داخل السوق السورية ودعم عمليات التسجيل والتوسع الميداني.</li>
<li>عدم التدخل في القرارات التقنية والهندسية الخاصة بالتطبيق التي يختص بها الطرف الأول حصرياً.</li>
<li>التعاون الكامل مع الطرف الأول في توفير أي متطلبات إدارية أو تنظيمية أو حكومية تلزم لتشغيل المشروع داخل سوريا.</li>
</ol>
</div>
</div>
</div>
<div>
<h4 class="font-sans font-bold text-slate-950 text-base mb-1">المادة الخامسة: نسب الشراكة وتوزيع الأرباح</h4>
<ol class="list-decimal list-inside space-y-3">
<li>يتم توزيع <strong>صافي الأرباح التشغيلية</strong> الناتجة عن تشغيل التطبيق في سوريا — بعد خصم كافة المصاريف التشغيلية والإدارية، وتكاليف الخوادم والبنية التحتية، والضرائب والرسوم الحكومية، وأجور فريق الدعم الفني والميداني — وفق النسب التالية:</li>
</ol>
<!-- Table inside Contract -->
<div class="my-4 overflow-x-auto">
<table class="w-full border-collapse border border-slate-800 text-center text-sm font-sans">
<thead>
<tr class="table-header-print bg-slate-100 text-slate-900 font-bold border-b border-slate-800">
<th class="border border-slate-800 p-2 text-right pr-4">الشريك</th>
<th class="border border-slate-800 p-2">الصفة التعاقدية</th>
<th class="border border-slate-800 p-2 w-1/4">الحصة من صافي الأرباح</th>
</tr>
</thead>
<tbody>
<tr class="border-b border-slate-800">
<td class="border border-slate-800 p-2.5 text-right pr-4 font-bold">حمزة عايد طحيمر الغويري</td>
<td class="border border-slate-800 p-2.5 text-slate-600">الشريك المؤسس الأول</td>
<td class="border border-slate-800 p-2.5 font-bold"><span id="sync-table-share-1" class="text-slate-950 text-base">45</span>%</td>
</tr>
<tr class="border-b border-slate-800">
<td class="border border-slate-800 p-2.5 text-right pr-4 font-bold">فراس قاسم أحمد مقابلة</td>
<td class="border border-slate-800 p-2.5 text-slate-600">الشريك المؤسس الثاني</td>
<td class="border border-slate-800 p-2.5 font-bold"><span id="sync-table-share-2" class="text-slate-950 text-base">45</span>%</td>
</tr>
<tr class="border-b border-slate-800">
<td class="border border-slate-800 p-2.5 text-right pr-4 font-bold">محمد عمر المجفد</td>
<td class="border border-slate-800 p-2.5 text-slate-600">الشريك المستثمر (الطرف الثاني)</td>
<td class="border border-slate-800 p-2.5 font-bold"><span id="sync-table-share-3" class="text-slate-950 text-base">10</span>%</td>
</tr>
</tbody>
</table>
</div>
<ol class="list-decimal list-inside space-y-2" start="2">
<li>تُوزَّع الأرباح بصفة <strong>ربع سنوية</strong> (كل ثلاثة أشهر ميلادية) بناءً على القوائم المالية المعتمدة والمدقّقة لعمليات التطبيق في سوريا.</li>
<li>لا تُوزَّع الأرباح إلا بعد تخصيص <strong>احتياطي تشغيلي</strong> بنسبة لا تقل عن <strong>10%</strong> من صافي الأرباح لتغطية الطوارئ والنفقات المستقبلية، ويتم الاتفاق بين الشركاء على آلية التصرف في هذا الاحتياطي.</li>
</ol>
</div>
<div class="page-break"></div>
<div>
<h4 class="font-sans font-bold text-slate-950 text-base mb-1">المادة السادسة: فسخ العقد وتصفية الشراكة</h4>
<ol class="list-decimal list-inside space-y-2">
<li>في حال فسخ هذا العقد أو تصفية المشروع لأي سبب كان قبل استرداد الطرف الثاني لكامل رأس ماله الاستثماري، يكون للطرف الثاني الأولوية المطلقة في الحصول على المبالغ المتبقية من رأس ماله الفعلي من أي عوائد تشغيلية متراكمة أو أصول قابلة للتسييل مرتبطة بنشاط المشروع في سوريا حصراً.</li>
<li>يتم تصفية جميع الحقوق والالتزامات المالية العالقة بين الأطراف عند الفسخ أو التصفية بما يتوافق مع القواعد القانونية والتجارية السائدة، وبما يضمن عدم الإضرار بأي طرف.</li>
</ol>
</div>
<div>
<h4 class="font-sans font-bold text-slate-950 text-base mb-1">المادة السابعة: الملكية الفكرية والعلامة التجارية</h4>
<ol class="list-decimal list-inside space-y-2">
<li>يُقرّ جميع الأطراف ويتفقون صراحةً على أن <strong>الكود البرمجي (Source Code)</strong> لتطبيق "سيرو (Siro)" بجميع إصداراته (الراكب، السائق، لوحة الإدارة)، وكذلك <strong>التصاميم والبنية الهندسية وقواعد البيانات والخوارزميات والعلامة التجارية والشعار</strong>، هي <strong>ملكية خاصة وحصرية ومطلقة ودائمة</strong> للطرف الأول (الشركاء المؤسسون: حمزة الغويري وفراس مقابلة).</li>
<li>لا يُنشئ هذا العقد ولا يمنح الطرف الثاني أي حق من حقوق الملكية الفكرية أو الصناعية أو الأدبية على الكود المصدري أو التطبيق أو العلامة التجارية، لا كلياً ولا جزئياً، سواء أثناء سريان العقد أو بعد انتهائه.</li>
<li>يقتصر حق الطرف الثاني على <strong>الحصص المالية من صافي الأرباح التشغيلية</strong> الناتجة عن تشغيل التطبيق في النطاق الجغرافي المحدد في هذا العقد حصراً.</li>
</ol>
</div>
<!-- Removed old page break -->
<div>
<h4 class="font-sans font-bold text-slate-950 text-base mb-1">المادة الثامنة: الإدارة واتخاذ القرارات</h4>
<ol class="list-decimal list-inside space-y-2">
<li>يتولى الطرف الأول (الشركاء المؤسسون) <strong>الإدارة التقنية والفنية والتشغيلية الكاملة</strong> للتطبيق، ويملكان حصرياً صلاحية اتخاذ جميع القرارات البرمجية والهندسية والفنية دون الرجوع للطرف الثاني.</li>
<li>تُتّخذ <strong>القرارات الاستراتيجية والتجارية الكبرى</strong> — كالتوسع الجغرافي، أو تغيير نموذج التسعير، أو الدخول في شراكات تجارية مع أطراف ثالثة — بالتشاور والإجماع بين الشركاء الثلاثة.</li>
<li>في حال عدم التوافق على قرار تجاري أو استراتيجي، يُعرض الأمر على <strong>محكّم تجاري مستقل</strong> يُتّفق عليه بين الأطراف لإصدار رأي استشاري ملزم.</li>
</ol>
</div>
<div>
<h4 class="font-sans font-bold text-slate-950 text-base mb-1">المادة التاسعة: السرية وعدم الإفشاء</h4>
<ol class="list-decimal list-inside space-y-2">
<li>يلتزم جميع الأطراف بالحفاظ التام على سرية كافة المعلومات التقنية والمالية والتجارية والتسويقية المتعلقة بالمشروع، وعدم إفشائها أو تسريبها أو إتاحتها لأي طرف ثالث بأي وسيلة كانت.</li>
<li>يسري التزام السرية أثناء فترة العقد و<strong>لمدة سنتين (2) ميلاديتين</strong> بعد انتهائه أو فسخه لأي سبب كان.</li>
<li><strong>يُستثنى من حكم السرية:</strong> المعلومات التي تصبح متاحة للعموم بشكل مشروع دون خطأ من الطرف المُفشي، أو المعلومات المطلوبة بموجب أمر قضائي أو تنظيمي واجب النفاذ.</li>
</ol>
</div>
<div>
<h4 class="font-sans font-bold text-slate-950 text-base mb-1">المادة العاشرة: عدم المنافسة — المشروطة بنشاط الشركة</h4>
<ol class="list-decimal list-inside space-y-2">
<li>يتعهد جميع الشركاء — طوال فترة سريان هذا العقد وما دام المشروع نشطاً وفعالاً تشغيلياً وتجارياً — بعدم القيام بأي مما يلي:
<ul class="list-disc list-inside pr-4 mt-1 space-y-1">
<li>تأسيس أو المشاركة أو الاستثمار في أي شركة أو تطبيق أو منصة تقدم خدمات النقل الذكي أو توصيل الركاب داخل الجمهورية العربية السورية.</li>
<li>تقديم خدمات استشارية تقنية أو تجارية لأي منافس مباشر لتطبيق "Siro" في السوق السورية.</li>
</ul>
</li>
<li><strong>يُشترط لسريان بند عدم المنافسة:</strong> أن يكون مشروع تطبيق "Siro" في سوريا <strong>نشطاً ومستمراً في تقديم خدماته</strong> فعلياً وبشكل دوري يمكن إثباته.</li>
<li>في حال توقّف المشروع عن العمل التشغيلي في سوريا لمدة تتجاوز <strong>تسعين (90) يوماً متتالياً</strong> — لأي سبب كان باستثناء القوة القاهرة — يُعتبر بند عدم المنافسة <strong>ملغى ولاغياً تلقائياً</strong> بحق جميع الأطراف، ويحق لأي شريك ممارسة أي نشاط تجاري مشابه بحرية تامة دون قيد أو شرط.</li>
</ol>
</div>
<div>
<h4 class="font-sans font-bold text-slate-950 text-base mb-1">المادة الحادية عشرة: مدة العقد وتجديده</h4>
<ol class="list-decimal list-inside space-y-2">
<li>يسري هذا العقد اعتباراً من تاريخ توقيعه ويمتد لمدة <strong>سنتين (2) ميلاديتين</strong> قابلة للتجديد لفترات مماثلة بموافقة الأطراف.</li>
<li>يُجدَّد العقد تلقائياً لفترات مماثلة ما لم يُخطر أحد الأطراف الآخرين خطياً برغبته في عدم التجديد قبل <strong>تسعين (90) يوماً</strong> من تاريخ انتهاء المدة الساري.</li>
<li>في حال عدم التجديد، تُصفّى الحقوق والالتزامات المالية القائمة بين الأطراف وفق أحكام هذا العقد.</li>
</ol>
</div>
<div>
<h4 class="font-sans font-bold text-slate-950 text-base mb-1">المادة الثانية عشرة: الانسحاب والتخارج</h4>
<ol class="list-decimal list-inside space-y-2">
<li>يحق لأي طرف الانسحاب من هذه الشراكة بموجب إشعار خطي مسبق بمدة لا تقل عن <strong>مائة وعشرين (120) يوماً</strong>.</li>
<li><strong>في حال رغبة الطرف الثاني في الانسحاب:</strong>
<ul class="list-disc list-inside pr-4 mt-1 space-y-1">
<li>يحق له المطالبة بالجزء غير المسترد من رأس ماله الاستثماري من العوائد التشغيلية المتراكمة أو من أي مستحقات مالية قائمة، وذلك وفق خطة سداد مجدولة يُتّفق عليها بين الأطراف لا تتجاوز <strong>اثني عشر (12) شهراً</strong> من تاريخ الانسحاب الفعلي.</li>
<li>تنقضي حصته في الأرباح المستقبلية اعتباراً من تاريخ نفاذ الانسحاب.</li>
</ul>
</li>
<li><strong>في حال رغبة أحد الشريكَيْن المؤسسَيْن في الانسحاب:</strong>
<ul class="list-disc list-inside pr-4 mt-1 space-y-1">
<li>يلتزم الشريك المنسحب بضمان انتقال سلس للمهام التقنية والتشغيلية.</li>
<li>يحتفظ الشريك المنسحب بحقوقه المالية المستحقة حتى تاريخ الانسحاب فقط.</li>
<li>تؤول صلاحياته وواجباته التقنية والإدارية إلى الشريك المؤسس المتبقي.</li>
</ul>
</li>
</ol>
</div>
<div class="page-break"></div>
<div>
<h4 class="font-sans font-bold text-slate-950 text-base mb-1">المادة الثالثة عشرة: الضمانات والمسؤولية</h4>
<ol class="list-decimal list-inside space-y-2">
<li>يُقرّ الطرف الأول بأن التطبيق خالٍ من أي رهن أو حجز أو حق للغير يمنع تشغيله واستثماره تجارياً وفق هذا العقد.</li>
<li>يُقرّ الطرف الثاني بأن مصادر التمويل المستخدمة في الاستثمار مشروعة وقانونية وغير مرتبطة بأي نشاط محظور قانوناً.</li>
<li>لا يتحمل أي طرف مسؤولية عن الخسائر التشغيلية الطبيعية الناجمة عن ظروف السوق أو المنافسة التجارية، ما لم يثبت تقصير متعمد أو إهمال جسيم من أحد الأطراف.</li>
<li>يلتزم الطرف الأول ببذل العناية المهنية اللازمة لحماية بيانات المستخدمين والسائقين، والامتثال لأفضل ممارسات أمن المعلومات.</li>
</ol>
</div>
<div>
<h4 class="font-sans font-bold text-slate-950 text-base mb-1">المادة الرابعة عشرة: القوة القاهرة</h4>
<p>لا يُعدّ أي طرف مُخِلاً بالتزاماته بموجب هذا العقد إذا حال دون تنفيذها ظرف من ظروف القوة القاهرة، وتشمل — دون حصر: الحروب، الكوارث الطبيعية، الأوبئة، القرارات الحكومية القاهرة، العقوبات الدولية، أو انقطاع شبكة الإنترنت الكامل في الدولة.</p>
</div>
<div>
<h4 class="font-sans font-bold text-slate-950 text-base mb-1">المادة الخامسة عشرة: تعديل العقد</h4>
<p>لا يجوز تعديل أو تغيير أي بند من بنود هذا العقد إلا بموجب <strong>ملحق تعديلي خطّي</strong> موقَّع من جميع الأطراف الثلاثة ومؤرَّخ، ويُعتبر أي تعديل شفهي أو ضمني باطلاً ولا يُعتدّ به.</p>
</div>
<div>
<h4 class="font-sans font-bold text-slate-950 text-base mb-1">المادة السادسة عشرة: القانون الواجب التطبيق وفض النزاعات</h4>
<ol class="list-decimal list-inside space-y-2">
<li>يخضع هذا العقد وتفسيره وتنفيذه للقوانين التجارية المعمول بها.</li>
<li>في حال نشوء أي خلاف أو نزاع بين الأطراف بشأن تفسير أو تنفيذ أي بند من بنود هذا العقد، يتم حله وفق الترتيب التالي:
<ul class="list-disc list-inside pr-4 mt-1 space-y-1">
<li><strong>أولاً:</strong> التسوية الودية المباشرة بين الأطراف خلال مدة لا تتجاوز <strong>ثلاثين (30) يوماً</strong> من تاريخ الإخطار بالنزاع.</li>
<li><strong>ثانياً:</strong> اللجوء إلى <strong>التحكيم التجاري</strong> أمام محكّم أو هيئة تحكيمية مستقلة يتفق عليها الأطراف، ويكون حكم التحكيم نهائياً وملزماً.</li>
<li><strong>ثالثاً:</strong> في حال تعذّر التحكيم، يُرفع النزاع أمام <strong>المحكمة المختصة</strong> المتفق عليها بين الأطراف.</li>
</ul>
</li>
</ol>
</div>
<div>
<h4 class="font-sans font-bold text-slate-950 text-base mb-1">المادة السابعة عشرة: أحكام ختامية</h4>
<ol class="list-decimal list-inside space-y-2">
<li>يمثّل هذا العقد كامل الاتفاق بين الأطراف فيما يتعلق بموضوعه، ويُلغي أي اتفاقات شفهية أو مكتوبة سابقة بين الأطراف بشأن نفس الموضوع.</li>
<li>في حال بطلان أي بند من بنود هذا العقد أو عدم قابليته للتنفيذ، تظل البنود الأخرى صحيحة ونافذة ومُلزِمة.</li>
<li>حُرّر هذا العقد من <strong>ثلاث (3) نسخ أصلية</strong> متطابقة بيد كل طرف نسخة للعمل بموجبها عند اللزوم.</li>
</ol>
</div>
</div>
<!-- Formal Signatures and Closing Section -->
<div class="signature-section mt-12 space-y-8">
<h3 class="font-sans font-extrabold text-slate-950 text-lg border-b border-slate-800 pb-2">توقيعات أطراف العقد والشهود</h3>
<div class="overflow-x-auto">
<table class="w-full border-collapse border border-slate-800 text-center text-sm font-sans">
<thead>
<tr class="table-header-print bg-slate-100 text-slate-900 font-bold border-b border-slate-800">
<th class="border border-slate-800 p-2">الصفة التعاقدية</th>
<th class="border border-slate-800 p-2 text-right pr-4">الاسم الكامل</th>
<th class="border border-slate-800 p-2 w-1/4">التوقيع</th>
<th class="border border-slate-800 p-2 w-1/5">التاريخ</th>
</tr>
</thead>
<tbody>
<tr class="border-b border-slate-800">
<td class="border border-slate-800 p-3 text-slate-700 font-medium">الشريك المؤسس الأول</td>
<td class="border border-slate-800 p-3 text-right pr-4 font-bold">حمزة عايد طحيمر الغويري</td>
<td class="border border-slate-800 p-3 text-slate-400">.......................</td>
<td class="border border-slate-800 p-3 font-bold sync-text-table-date">14/06/2026م</td>
</tr>
<tr class="border-b border-slate-800">
<td class="border border-slate-800 p-3 text-slate-700 font-medium">الشريك المؤسس الثاني</td>
<td class="border border-slate-800 p-3 text-right pr-4 font-bold">فراس قاسم أحمد مقابلة</td>
<td class="border border-slate-800 p-3 text-slate-400">.......................</td>
<td class="border border-slate-800 p-3 font-bold sync-text-table-date">14/06/2026م</td>
</tr>
<tr class="border-b border-slate-800">
<td class="border border-slate-800 p-3 text-slate-700 font-medium">الشريك المستثمر (الطرف الثاني)</td>
<td class="border border-slate-800 p-3 text-right pr-4 font-bold">محمد عمر المجفد</td>
<td class="border border-slate-800 p-3 text-slate-400">.......................</td>
<td class="border border-slate-800 p-3 font-bold sync-text-table-date">14/06/2026م</td>
</tr>
</tbody>
</table>
</div>
<!-- Witnesses Section -->
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 pt-4 text-sm font-sans">
<div class="border border-slate-300 p-4 rounded-xl space-y-2">
<span class="font-bold text-slate-900">شاهد أول (اختياري):</span>
<div class="text-slate-500">الاسم: _____________________________________</div>
<div class="text-slate-500">التوقيع: ___________________________________</div>
</div>
<div class="border border-slate-300 p-4 rounded-xl space-y-2">
<span class="font-bold text-slate-900">شاهد ثانٍ (اختياري):</span>
<div class="text-slate-500">الاسم: _____________________________________</div>
<div class="text-slate-500">التوقيع: ___________________________________</div>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
</div>
<!-- Live JS Sync Logic -->
<script>
// DOM Elements
const inputId1 = document.getElementById('input-id-1');
const inputId2 = document.getElementById('input-id-2');
const inputId3 = document.getElementById('input-id-3');
const inputDate = document.getElementById('input-date');
const inputShare1 = document.getElementById('input-share-1');
const inputShare2 = document.getElementById('input-share-2');
const inputShare3 = document.getElementById('input-share-3');
// Sync Spans
const syncP1 = document.getElementById('sync-p1');
const syncP2 = document.getElementById('sync-p2');
const syncP3 = document.getElementById('sync-p3');
const syncTextDate = document.getElementById('sync-text-date');
const syncContractDate = document.getElementById('sync-contract-date');
const syncTableDates = document.querySelectorAll('.sync-text-table-date');
const syncTableShare1 = document.getElementById('sync-table-share-1');
const syncTableShare2 = document.getElementById('sync-table-share-2');
const syncTableShare3 = document.getElementById('sync-table-share-3');
// Validation Elements
const shareSumEl = document.getElementById('share-sum');
const shareIndicator = document.getElementById('share-indicator');
const shareValidationMsg = document.getElementById('share-validation-msg');
// Realtime Event Listeners
inputId1.addEventListener('input', (e) => syncP1.textContent = e.target.value);
inputId2.addEventListener('input', (e) => syncP2.textContent = e.target.value);
inputId3.addEventListener('input', (e) => syncP3.textContent = e.target.value);
inputDate.addEventListener('input', (e) => {
const val = e.target.value || '14/06/2026م';
syncTextDate.textContent = val;
syncContractDate.textContent = val;
syncTableDates.forEach(el => el.textContent = val);
});
function calculateShares() {
const s1 = parseFloat(inputShare1.value) || 0;
const s2 = parseFloat(inputShare2.value) || 0;
const s3 = parseFloat(inputShare3.value) || 0;
const total = s1 + s2 + s3;
shareSumEl.textContent = total;
syncTableShare1.textContent = s1;
syncTableShare2.textContent = s2;
syncTableShare3.textContent = s3;
if (total === 100) {
shareIndicator.className = "text-xs font-bold px-2 py-0.5 rounded-full bg-emerald-100 text-emerald-700";
shareValidationMsg.className = "text-xs p-2.5 rounded-lg bg-emerald-50 text-emerald-800 border border-emerald-200 font-semibold leading-relaxed";
shareValidationMsg.innerHTML = "✅ الحصص متوازنة تماماً ومجموعها يساوي 100%. العقد جاهز للطباعة.";
} else {
shareIndicator.className = "text-xs font-bold px-2 py-0.5 rounded-full bg-red-100 text-red-600";
shareValidationMsg.className = "text-xs p-2.5 rounded-lg bg-red-50 text-red-700 border border-red-200 font-medium leading-relaxed";
shareValidationMsg.innerHTML = `⚠️ تنبيه: مجموع الحصص الحالي هو <b>${total}%</b>. يجب ضبط النسب ليكون الإجمالي 100% لتصحيح صياغة العقد قبل اعتماده.`;
}
}
inputShare1.addEventListener('input', calculateShares);
inputShare2.addEventListener('input', calculateShares);
inputShare3.addEventListener('input', calculateShares);
// Run Calculation on load to set defaults
calculateShares();
</script>
</body>
</html>

205
investment_agreement.md Normal file
View File

@@ -0,0 +1,205 @@
<div dir="rtl" align="right">
# عقد شراكة واستثمار تجاري لتشغيل تطبيق "Siro" في الجمهورية العربية السورية
**الرقم المرجعي:** SIRO-INV-SY-2026-001
**تم تحرير هذا العقد وتوثيقه في اليوم الموافق \_\_\_\_\_\_\_\_\_\_\_\_\_\_ الميلادي، بين كلٍّ من:**
---
### **الطرف الأول (المؤسسون الشريك الإداري والتقني):**
1. **السيد/ حمزة عايد طحيمر الغويري**، أردني الجنسية، يحمل الرقم الوطني \_\_\_\_\_\_\_\_\_\_، ويُشار إليه فيما يلي بـ **"الشريك المؤسس الأول"**.
2. **السيد/ فراس قاسم أحمد مقابلة**، أردني الجنسية، يحمل الرقم الوطني \_\_\_\_\_\_\_\_\_\_، ويُشار إليه فيما يلي بـ **"الشريك المؤسس الثاني"**.
*(ويُشار إليهما مجتمعَيْن بـ **"الطرف الأول"** أو **"الشركاء المؤسسون"**).*
### **الطرف الثاني (الشريك المستثمر):**
3. **السيد/ محمد عمر المجفد**، يحمل الرقم الوطني / رقم الهوية \_\_\_\_\_\_\_\_\_\_، ويُشار إليه فيما يلي بـ **"الطرف الثاني"** أو **"الشريك المستثمر"**.
*(ويُشار إلى الأطراف الثلاثة مجتمعين بـ **"الشركاء"** أو **"أطراف العقد"**).*
---
## التمهيد
**حيث إن** الطرف الأول (الشركاء المؤسسون) يملك حصرياً ويطوّر تطبيق الهواتف الذكية المسمى **"Siro"**، وهو منصة تقنية متخصصة في تقديم خدمات النقل الذكي، وتوصيل الركاب، وتسهيل التنقل الحضري؛
**وحيث إن** الطرف الثاني (الشريك المستثمر) يرغب في تقديم تمويل استثماري لتغطية تكاليف إطلاق التطبيق وتشغيله وتسويقه داخل السوق السورية مقابل حصة من صافي الأرباح التشغيلية؛
**وحيث إن** إرادة الأطراف الثلاثة قد التقت على تأسيس شراكة تجارية واستثمارية مشتركة قائمة على الشفافية والالتزام المتبادل؛
**فقد اتفق الأطراف — بعد إقرارهم بكامل أهليتهم القانونية للتعاقد — على ما يلي:**
---
## المادة الأولى: نطاق التمهيد
يُعدّ التمهيد المذكور أعلاه جزءاً لا يتجزأ من هذا العقد، ويُقرأ ويُفسَّر ضمن سياقه.
---
## المادة الثانية: موضوع العقد والنطاق الجغرافي
1. موضوع هذا العقد هو تنظيم العلاقة التجارية والاستثمارية بين الأطراف لتشغيل واستغلال تطبيق **"Siro"** تجارياً وخدمياً وتسويقياً.
2. يقتصر النطاق الجغرافي لهذا العقد حصراً على أراضي **الجمهورية العربية السورية**. ولا يشمل هذا العقد أي سوق أو دولة أخرى يعمل فيها التطبيق أو قد يتوسع إليها مستقبلاً.
3. لا يجوز توسيع النطاق الجغرافي لهذا العقد إلا بموجب ملحق تعديلي خطّي موقّع من جميع الأطراف.
4. **حق الأولوية في التوسع الدولي:** في حال رغبة الطرف الأول في توسيع النطاق الجغرافي للمشروع وتشغيل تطبيق Siro في أي دولة أو سوق خارج الجمهورية العربية السورية، يلتزم الطرف الأول بعرض هذه الفرصة الاستثمارية الجديدة على الطرف الثاني خطياً قبل عرضها على أي طرف ثالث. ويكون للطرف الثاني حق الأولوية (Right of First Refusal) في الاستثمار والمشاركة في السوق الجديد بذات الشروط أو بشروط يتم التوافق عليها، على أن يبدي الطرف الثاني رغبته خطياً خلال مدة لا تتجاوز ثلاثين (30) يوماً من تاريخ استلام العرض المكتوب، وفي حال انقضاء هذه المدة دون رد أو في حال اعتذاره خطياً، يحق للطرف الأول التعاقد مع مستثمرين آخرين بحرية تامة ودون أي التزام تجاه الطرف الثاني.
---
## المادة الثالثة: رأس المال الاستثماري وآلية الدفع
1. يلتزم الطرف الثاني بتقديم رأس مال استثماري إجمالي قدره **مائة وثمانون ألف دولار أمريكي (180,000 USD)** لتمويل عمليات إطلاق المشروع وتشغيله في سوريا.
2. يُسدَّد رأس المال الاستثماري على دفعات مجدولة ومرنة يتم التوافق عليها ودياً بين الأطراف بما يتماشى مع خطة العمل والاحتياجات التشغيلية المتجددة للمشروع.
3. تُودع جميع المبالغ والدفعات الاستثمارية في الحساب المصرفي التجاري للشركة في المملكة الأردنية الهاشمية، وذلك بعد إتمام تأسيس وتسجيل الشركة رسمياً وفتح حسابها التجاري في الأردن، لضمان وتسهيل انسياب وحركة الأموال التشغيلية والاستثمارية دخولاً وخروجاً.
---
## المادة الرابعة: التزامات الأطراف
### أولاً: التزامات الطرف الأول (الشركاء المؤسسون)
1. يتحمل الطرف الأول المسؤولية الكاملة والحصرية عن الجوانب التقنية والفنية والتشغيلية والإدارية للتطبيق، بما يشمل — دون حصر — التطوير البرمجي، وإدارة الخوادم، والصيانة الدورية، وإصلاح الأعطال الفنية، وإدارة فريق العمل التقني.
2. إصدار التحديثات والتطويرات المستمرة لتطبيقَيْ الراكب والسائق بما يتلاءم مع متطلبات السوق السورية ويضمن تنافسية المنتج.
3. تقديم تقرير أداء تشغيلي ومالي للطرف الثاني بشكل **شهري** يتضمن: عدد الرحلات المنفذة، عدد السائقين والركاب النشطين، الإيرادات الإجمالية، المصروفات التشغيلية، وصافي الأرباح.
4. ضمان استمرارية الخدمة وتوفّر التطبيق لمستخدميه بنسبة لا تقل عن **95%** من أيام التشغيل الشهري (باستثناء حالات القوة القاهرة والصيانة المجدولة).
5. الالتزام بالعمل الفني والتقني المستمر والدؤوب على تحديث وتطوير وصيانة نظام وتطبيقات Siro بانتظام، لضمان استقرار الخدمة وتشغيلها بكفاءة عالية وتلبية احتياجات السوق السورية.
### ثانياً: التزامات الطرف الثاني (الشريك المستثمر)
1. الالتزام بسداد كامل رأس المال الاستثماري المتفق عليه (180,000 دولار أمريكي) وفق جدول الدفعات المحدد في المادة الثالثة.
2. المساهمة الفعّالة بخبراته اللوجستية والعلاقاتية لتسهيل العمل التجاري داخل السوق السورية ودعم عمليات التسجيل والتوسع الميداني.
3. عدم التدخل في القرارات التقنية والهندسية الخاصة بالتطبيق التي يختص بها الطرف الأول حصرياً.
4. التعاون الكامل مع الطرف الأول في توفير أي متطلبات إدارية أو تنظيمية أو حكومية تلزم لتشغيل المشروع داخل سوريا.
---
## المادة الخامسة: نسب الشراكة وتوزيع الأرباح
1. يتم توزيع **صافي الأرباح التشغيلية** الناتجة عن تشغيل التطبيق في سوريا — بعد خصم كافة المصاريف التشغيلية والإدارية، وتكاليف الخوادم والبنية التحتية، والضرائب والرسوم الحكومية، وأجور فريق الدعم الفني والميداني — وفق النسب التالية:
| الشريك | الحصة من صافي الأرباح |
| :--- | :---: |
| **حمزة عايد طحيمر الغويري** (الشريك المؤسس الأول) | [\_\_\_]% |
| **فراس قاسم أحمد مقابلة** (الشريك المؤسس الثاني) | [\_\_\_]% |
| **محمد عمر المجفد** (الشريك المستثمر) | [\_\_\_]% |
2. تُوزَّع الأرباح بصفة **ربع سنوية** (كل ثلاثة أشهر ميلادية) بناءً على القوائم المالية المعتمدة والمدقّقة لعمليات التطبيق في سوريا.
3. لا تُوزَّع الأرباح إلا بعد تخصيص **احتياطي تشغيلي** بنسبة لا تقل عن **10%** من صافي الأرباح لتغطية الطوارئ والنفقات المستقبلية، ويتم الاتفاق بين الشركاء على آلية التصرف في هذا الاحتياطي.
---
## المادة السادسة: فسخ العقد وتصفية الشراكة
1. في حال فسخ هذا العقد أو تصفية المشروع لأي سبب كان قبل استرداد الطرف الثاني لكامل رأس ماله الاستثماري، يكون للطرف الثاني الأولوية المطلقة في الحصول على المبالغ المتبقية من رأس ماله الفعلي من أي عوائد تشغيلية متراكمة أو أصول قابلة للتسييل مرتبطة بنشاط المشروع في سوريا حصراً.
2. يتم تصفية جميع الحقوق والالتزامات المالية العالقة بين الأطراف عند الفسخ أو التصفية بما يتوافق مع القواعد القانونية والتجارية السائدة، وبما يضمن عدم الإضرار بأي طرف.
---
## المادة السابعة: الملكية الفكرية والعلامة التجارية
1. يُقرّ جميع الأطراف ويتفقون صراحةً على أن **الكود البرمجي (Source Code)** لتطبيق "Siro" بجميع إصداراته (الراكب، السائق، لوحة الإدارة)، وكذلك **التصاميم والبنية الهندسية وقواعد البيانات والخوارزميات والعلامة التجارية والشعار**، هي **ملكية خاصة وحصرية ومطلقة ودائمة** للطرف الأول (الشركاء المؤسسون: حمزة الغويري وفراس مقابلة).
2. لا يُنشئ هذا العقد ولا يمنح الطرف الثاني أي حق من حقوق الملكية الفكرية أو الصناعية أو الأدبية على الكود المصدري أو التطبيق أو العلامة التجارية، لا كلياً ولا جزئياً، سواء أثناء سريان العقد أو بعد انتهائه.
3. يقتصر حق الطرف الثاني على **الحصص المالية من صافي الأرباح التشغيلية** الناتجة عن تشغيل التطبيق في النطاق الجغرافي المحدد في هذا العقد حصراً.
---
## المادة الثامنة: الإدارة واتخاذ القرارات
1. يتولى الطرف الأول (الشركاء المؤسسون) **الإدارة التقنية والفنية والتشغيلية الكاملة** للتطبيق، ويملكان حصرياً صلاحية اتخاذ جميع القرارات البرمجية والهندسية والفنية دون الرجوع للطرف الثاني.
2. تُتّخذ **القرارات الاستراتيجية والتجارية الكبرى** — كالتوسع الجغرافي، أو تغيير نموذج التسعير، أو الدخول في شراكات تجارية مع أطراف ثالثة — بالتشاور والإجماع بين الشركاء الثلاثة.
3. في حال عدم التوافق على قرار تجاري أو استراتيجي، يُعرض الأمر على **محكّم تجاري مستقل** يُتّفق عليه بين الأطراف لإصدار رأي استشاري ملزم.
---
## المادة التاسعة: المراجعة المالية وحق الاطلاع
1. يحق لأي طرف — وبشكل خاص الطرف الثاني — طلب الاطلاع على **السجلات المالية والمحاسبية** المتعلقة بعمليات التطبيق في سوريا في أي وقت، شريطة تقديم طلب خطي مسبق بمدة لا تقل عن **سبعة (7) أيام عمل**.
2. يلتزم الطرف الأول بتوفير كشوفات مالية شفّافة ومُوثّقة تشمل: الإيرادات، المصروفات، الضرائب، الرواتب، تكاليف البنية التحتية، وصافي الأرباح.
3. يحق لأي طرف — على نفقته الخاصة — تعيين **مدقق حسابات مستقل** لمراجعة الحسابات مرة واحدة سنوياً على الأقل، ويلتزم جميع الأطراف بتسهيل مهمة المدقق.
---
## المادة العاشرة: السرية وعدم الإفشاء
1. يلتزم جميع الأطراف بالحفاظ التام على سرية كافة المعلومات التقنية والمالية والتجارية والتسويقية المتعلقة بالمشروع، وعدم إفشائها أو تسريبها أو إتاحتها لأي طرف ثالث بأي وسيلة كانت.
2. يسري التزام السرية أثناء فترة العقد و**لمدة سنتين (2) ميلاديتين** بعد انتهائه أو فسخه لأي سبب كان.
3. يُستثنى من حكم السرية: المعلومات التي تصبح متاحة للعموم بشكل مشروع دون خطأ من الطرف المُفشي، أو المعلومات المطلوبة بموجب أمر قضائي أو تنظيمي واجب النفاذ.
---
## المادة الحادية عشرة: عدم المنافسة — المشروطة بنشاط الشركة
1. يتعهد جميع الشركاء — طوال فترة سريان هذا العقد وما دام المشروع نشطاً وفعالاً تشغيلياً وتجارياً — بعدم القيام بأي مما يلي:
- تأسيس أو المشاركة أو الاستثمار في أي شركة أو تطبيق أو منصة تقدم خدمات النقل الذكي أو توصيل الركاب داخل الجمهورية العربية السورية.
- تقديم خدمات استشارية تقنية أو تجارية لأي منافس مباشر لتطبيق "Siro" في السوق السورية.
2. **يُشترط لسريان بند عدم المنافسة** أن يكون مشروع تطبيق "Siro" في سوريا **نشطاً ومستمراً في تقديم خدماته** فعلياً وبشكل دوري يمكن إثباته.
3. في حال توقّف المشروع عن العمل التشغيلي في سوريا لمدة تتجاوز **تسعين (90) يوماً متتالياً** — لأي سبب كان باستثناء القوة القاهرة — يُعتبر بند عدم المنافسة **ملغى ولاغياً تلقائياً** بحق جميع الأطراف، ويحق لأي شريك ممارسة أي نشاط تجاري مشابه بحرية تامة ودون قيد أو شرط.
---
## المادة الثانية عشرة: مدة العقد وتجديده
1. يسري هذا العقد اعتباراً من تاريخ توقيعه ويمتد لمدة **سنتين (2) ميلاديتين** قابلة للتجديد لفترات مماثلة بموافقة الأطراف.
2. يُجدَّد العقد تلقائياً لفترات مماثلة ما لم يُخطر أحد الأطراف الآخرين خطياً برغبته في عدم التجديد قبل **تسعين (90) يوماً** من تاريخ انتهاء المدة الساري.
3. في حال عدم التجديد، تُصفّى الحقوق والالتزامات المالية القائمة بين الأطراف وفق أحكام هذا العقد.
---
## المادة الثالثة عشرة: الانسحاب والتخارج
1. يحق لأي طرف الانسحاب من هذه الشراكة بموجب إشعار خطي مسبق بمدة لا تقل عن **مائة وعشرين (120) يوماً**.
2. في حال رغبة الطرف الثاني في الانسحاب:
- يحق له المطالبة بالجزء غير المسترد من رأس ماله الاستثماري من العوائد التشغيلية المتراكمة أو من أي مستحقات مالية قائمة، وذلك وفق خطة سداد مجدولة يُتّفق عليها بين الأطراف لا تتجاوز **اثني عشر (12) شهراً** من تاريخ الانسحاب الفعلي.
- تنقضي حصته في الأرباح المستقبلية اعتباراً من تاريخ نفاذ الانسحاب.
3. في حال رغبة أحد الشريكَيْن المؤسسَيْن في الانسحاب:
- يلتزم الشريك المنسحب بضمان انتقال سلس للمهام التقنية والتشغيلية.
- يحتفظ الشريك المنسحب بحقوقه المالية المستحقة حتى تاريخ الانسحاب فقط.
- تؤول صلاحياته وواجباته التقنية والإدارية إلى الشريك المؤسس المتبقي.
---
## المادة الرابعة عشرة: الضمانات والمسؤولية
1. يُقرّ الطرف الأول بأن التطبيق خالٍ من أي رهن أو حجز أو حق للغير يمنع تشغيله واستثماره تجارياً وفق هذا العقد.
2. يُقرّ الطرف الثاني بأن مصادر التمويل المستخدمة في الاستثمار مشروعة وقانونية وغير مرتبطة بأي نشاط محظور قانوناً.
3. لا يتحمل أي طرف مسؤولية عن الخسائر التشغيلية الطبيعية الناجمة عن ظروف السوق أو المنافسة التجارية، ما لم يثبت تقصير متعمد أو إهمال جسيم من أحد الأطراف.
4. يلتزم الطرف الأول ببذل العناية المهنية اللازمة لحماية بيانات المستخدمين والسائقين، والامتثال لأفضل ممارسات أمن المعلومات.
---
## المادة الخامسة عشرة: القوة القاهرة
لا يُعدّ أي طرف مُخِلاً بالتزاماته بموجب هذا العقد إذا حال دون تنفيذها ظرف من ظروف القوة القاهرة، وتشمل — دون حصر: الحروب، الكوارث الطبيعية، الأوبئة، القرارات الحكومية القاهرة، العقوبات الدولية، أو انقطاع شبكة الإنترنت الكامل في الدولة.
---
## المادة السادسة عشرة: تعديل العقد
لا يجوز تعديل أو تغيير أي بند من بنود هذا العقد إلا بموجب **ملحق تعديلي خطّي** موقَّع من جميع الأطراف الثلاثة ومؤرَّخ، ويُعتبر أي تعديل شفهي أو ضمني باطلاً ولا يُعتدّ به.
---
## المادة السابعة عشرة: القانون الواجب التطبيق وفض النزاعات
1. يخضع هذا العقد وتفسيره وتنفيذه للقوانين التجارية المعمول بها.
2. في حال نشوء أي خلاف أو نزاع بين الأطراف بشأن تفسير أو تنفيذ أي بند من بنود هذا العقد، يتم حله وفق الترتيب التالي:
- **أولاً:** التسوية الودية المباشرة بين الأطراف خلال مدة لا تتجاوز **ثلاثين (30) يوماً** من تاريخ الإخطار بالنزاع.
- **ثانياً:** اللجوء إلى **التحكيم التجاري** أمام محكّم أو هيئة تحكيمية مستقلة يتفق عليها الأطراف، ويكون حكم التحكيم نهائياً وملزماً.
- **ثالثاً:** في حال تعذّر التحكيم، يُرفع النزاع أمام **المحكمة المختصة** المتفق عليها بين الأطراف.
---
## المادة الثامنة عشرة: أحكام ختامية
1. يمثّل هذا العقد كامل الاتفاق بين الأطراف فيما يتعلق بموضوعه، ويُلغي أي اتفاقات شفهية أو مكتوبة سابقة بين الأطراف بشأن نفس الموضوع.
2. في حال بطلان أي بند من بنود هذا العقد أو عدم قابليته للتنفيذ، تظل البنود الأخرى صحيحة ونافذة ومُلزِمة.
3. حُرّر هذا العقد من **ثلاث (3) نسخ أصلية** متطابقة بيد كل طرف نسخة للعمل بموجبها عند اللزوم.
---
## التوقيعات
&nbsp;
| | **الطرف** | **الاسم الكامل** | **التوقيع** | **التاريخ** |
| :---: | :--- | :--- | :---: | :---: |
| 1 | الشريك المؤسس الأول | حمزة عايد طحيمر الغويري | ..................... | \_\_\_/\_\_\_/2026 |
| 2 | الشريك المؤسس الثاني | فراس قاسم أحمد مقابلة | ..................... | \_\_\_/\_\_\_/2026 |
| 3 | الشريك المستثمر | محمد عمر المجفد | ..................... | \_\_\_/\_\_\_/2026 |
&nbsp;
---
**شاهد أول (اختياري):**
الاسم: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
التوقيع: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
**شاهد ثانٍ (اختياري):**
الاسم: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
التوقيع: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
</div>

View File

@@ -490,8 +490,8 @@ https://siromove.com/invite.php?code=$couponCode&app=rider
"inviterDriverPhone": formattedPhoneNumber,
});
if (response != 'failure') {
var d = (response);
if (response != 'failure' && response is Map) {
var d = response;
mySnackbarSuccess('Invite sent successfully'.tr);
String inviteCode = d['message']['inviteCode'].toString();
String message = '${'*Siro DRIVER CODE*'.tr}\n\n'
@@ -499,9 +499,10 @@ https://siromove.com/invite.php?code=$couponCode&app=rider
'${"To get a gift for both".tr}\n\n'
'${"The period of this code is 24 hours".tr}\n\n'
'${'before'.tr} *${d['message']['expirationTime'].toString()}*\n\n'
'_*${inviteCode}*_\n\n'
'${"Code:".tr} *${inviteCode}*\n\n'
'${"Quick Invite Link:".tr}\n'
'${AppLink.inviteRedirectUrl}?code=$inviteCode&app=driver';
'${AppLink.inviteRedirectUrl}?code=$inviteCode&app=driver\n\n'
'${"💡 Note: If the link above is not clickable, please save this contact or reply to this message to activate all links.".tr}';
launchCommunication('whatsapp', formattedPhoneNumber, message);
invitePhoneController.clear();
@@ -533,7 +534,7 @@ https://siromove.com/invite.php?code=$couponCode&app=rider
},
);
if (response != 'failure') {
if (response != 'failure' && response is Map) {
var d = response;
mySnackbarSuccess('Invite sent successfully'.tr);
String inviteCode = d['message']['inviteCode'].toString();
@@ -543,9 +544,10 @@ https://siromove.com/invite.php?code=$couponCode&app=rider
'${"To get a gift for both".tr}\n\n'
'${"The period of this code is 24 hours".tr}\n\n'
'${'before'.tr} *${d['message']['expirationTime'].toString()}*\n\n'
'_*${inviteCode}*_\n\n'
'${"Code:".tr} *${inviteCode}*\n\n'
'${"Quick Invite Link:".tr}\n'
'${AppLink.inviteRedirectUrl}?code=$inviteCode&app=rider';
'${AppLink.inviteRedirectUrl}?code=$inviteCode&app=rider\n\n'
'${"💡 Note: If the link above is not clickable, please save this contact or reply to this message to activate all links.".tr}';
launchCommunication('whatsapp', formattedPhoneNumber, message);
invitePhoneController.clear();

View File

@@ -5,6 +5,8 @@ import 'package:siro_driver/constant/links.dart';
import 'package:siro_driver/controller/functions/crud.dart';
import 'package:siro_driver/views/widgets/error_snakbar.dart';
import '../../views/widgets/mycircular.dart';
class InvitesRewardsController extends GetxController {
bool isLoading = false;
String? referralCode;
@@ -44,7 +46,8 @@ class InvitesRewardsController extends GetxController {
}
Future<void> claimReward(int referralId, String claimType) async {
Get.dialog(const Center(child: CircularProgressIndicator()), barrierDismissible: false);
Get.dialog(const Center(child: CircularProgressIndicator()),
barrierDismissible: false);
var res = await CRUD().post(
link: AppLink.claimDriverReward,
@@ -76,28 +79,58 @@ class InvitesRewardsController extends GetxController {
Future<void> claimUnifiedReward(int referralId) async {
// Show dialog to choose wallet or cash
Get.defaultDialog(
title: "Choose Claim Method".tr,
content: Text("How would you like to receive your reward?".tr),
actions: [
ElevatedButton(
onPressed: () {
Get.back();
claimReward(referralId, 'wallet');
},
child: Text("Wallet".tr),
),
ElevatedButton(
onPressed: () {
Get.back();
claimReward(referralId, 'cash');
},
child: Text("Cash".tr),
),
TextButton(
onPressed: () => Get.back(),
child: Text("Cancel".tr, style: TextStyle(color: Colors.red)),
)
]
);
title: "Choose Claim Method".tr,
content: Text("How would you like to receive your reward?".tr),
actions: [
ElevatedButton(
onPressed: () {
Get.back();
claimReward(referralId, 'wallet');
},
child: Text("Wallet".tr),
),
ElevatedButton(
onPressed: () {
Get.back();
claimReward(referralId, 'cash');
},
child: Text("Cash".tr),
),
TextButton(
onPressed: () => Get.back(),
child: Text("Cancel".tr, style: TextStyle(color: Colors.red)),
)
]);
}
Future<void> linkInviteCode(String inviteCode) async {
Get.dialog(const Center(child: MyCircularProgressIndicator()),
barrierDismissible: false);
try {
var response =
await CRUD().post(link: AppLink.addUnifiedInvite, payload: {
"inviter_code": inviteCode,
});
Get.back(); // close loading
if (response != 'failure') {
var data = response is String ? jsonDecode(response) : response;
if (data['status'] == 'success') {
Get.snackbar("Success".tr, "You have been successfully referred!".tr,
backgroundColor: Colors.green, colorText: Colors.white);
await getReferralStats(); // Refresh stats
} else {
Get.snackbar(
"Notice".tr, data['message'] ?? "Could not add invite".tr);
}
} else {
Get.snackbar("Error".tr, "Network error occurred".tr);
}
} catch (e) {
Get.back(); // close loading
Get.snackbar("Error".tr, "Network error occurred".tr);
}
}
}

View File

@@ -1,13 +1,17 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/services.dart';
import 'package:get/get.dart';
import 'package:share_plus/share_plus.dart';
import '../../../constant/box_name.dart';
import '../../../constant/colors.dart';
import '../../../constant/links.dart';
import '../../../controller/auth/captin/invit_controller.dart';
import '../../../controller/functions/encrypt_decrypt.dart';
import '../../../main.dart';
import '../../../controller/home/invites_rewards_controller.dart';
import '../../widgets/error_snakbar.dart';
class InviteScreen extends StatelessWidget {
final InviteController controller = Get.put(InviteController());
@@ -97,6 +101,9 @@ class InviteScreen extends StatelessWidget {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildPermanentCodeCard(context),
const SizedBox(height: 10),
_buildManualCodeEntry(context),
const SizedBox(height: 20),
Text(
"Invite another driver and both get a gift after he completes 100 trips!"
@@ -123,6 +130,10 @@ class InviteScreen extends StatelessWidget {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildPermanentCodeCard(context),
const SizedBox(height: 10),
_buildManualCodeEntry(context),
const SizedBox(height: 20),
Container(
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
@@ -156,6 +167,164 @@ class InviteScreen extends StatelessWidget {
);
}
Widget _buildPermanentCodeCard(BuildContext context) {
return GetBuilder<InvitesRewardsController>(
builder: (rc) {
String code = rc.referralCode ?? 'Loading...'.tr;
return Container(
width: double.infinity,
padding: const EdgeInsets.all(20),
margin: const EdgeInsets.symmetric(vertical: 10),
decoration: BoxDecoration(
color: CupertinoColors.systemGrey6,
borderRadius: BorderRadius.circular(12),
border: Border.all(color: AppColor.blueColor.withOpacity(0.2)),
),
child: Column(
children: [
Text(
"Your Permanent Referral Code".tr,
style: const TextStyle(
fontSize: 14,
color: CupertinoColors.secondaryLabel,
fontWeight: FontWeight.w500,
),
),
const SizedBox(height: 12),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
code,
style: const TextStyle(
fontSize: 24,
fontWeight: FontWeight.bold,
color: AppColor.blueColor,
letterSpacing: 2,
),
),
if (rc.referralCode != null) ...[
const SizedBox(width: 16),
GestureDetector(
onTap: () {
Clipboard.setData(ClipboardData(text: rc.referralCode!));
mySnackbarSuccess('Code copied!'.tr);
},
child: const Icon(
CupertinoIcons.doc_on_doc,
color: AppColor.blueColor,
size: 20,
),
),
],
],
),
if (rc.referralCode != null) ...[
const SizedBox(height: 16),
CupertinoButton(
color: AppColor.blueColor.withOpacity(0.1),
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 8),
borderRadius: BorderRadius.circular(8),
onPressed: () {
final appName = 'Siro';
final isDriver = controller.selectedTab == 0;
final shareText = isDriver
? 'Join $appName as a driver! Use my referral code: ${rc.referralCode}\nDownload: ${AppLink.inviteRedirectUrl}?code=${rc.referralCode}&app=driver\n\n💡 Note: If the link is not clickable, save this number or reply to activate links!'
: 'Get a ride with $appName! Use my referral code: ${rc.referralCode} for a discount.\nDownload: ${AppLink.inviteRedirectUrl}?code=${rc.referralCode}&app=rider\n\n💡 Note: If the link is not clickable, save this number or reply to activate links!';
Share.share(shareText);
},
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
const Icon(CupertinoIcons.share, color: AppColor.blueColor, size: 18),
const SizedBox(width: 8),
Text(
'Share via WhatsApp Groups'.tr,
style: const TextStyle(
color: AppColor.blueColor,
fontSize: 14,
fontWeight: FontWeight.bold,
),
),
],
),
),
],
],
),
);
},
);
}
Widget _buildManualCodeEntry(BuildContext context) {
final TextEditingController manualCodeController = TextEditingController();
return Container(
padding: const EdgeInsets.all(16),
margin: const EdgeInsets.symmetric(vertical: 10),
decoration: BoxDecoration(
color: CupertinoColors.systemGrey6,
borderRadius: BorderRadius.circular(12),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Enter Inviter's Code".tr,
style: const TextStyle(
fontSize: 15,
fontWeight: FontWeight.bold,
color: CupertinoColors.label,
),
),
const SizedBox(height: 8),
Text(
"If someone referred you, enter their code below to link accounts and receive rewards.".tr,
style: const TextStyle(
fontSize: 12,
color: CupertinoColors.secondaryLabel,
),
),
const SizedBox(height: 12),
Row(
children: [
Expanded(
child: Container(
decoration: BoxDecoration(
color: CupertinoColors.white,
borderRadius: BorderRadius.circular(8),
border: Border.all(color: CupertinoColors.systemGrey4),
),
child: CupertinoTextField.borderless(
controller: manualCodeController,
placeholder: 'Enter Code (e.g. AB1234)'.tr,
padding: const EdgeInsets.all(10),
textCapitalization: TextCapitalization.characters,
),
),
),
const SizedBox(width: 12),
CupertinoButton(
color: AppColor.blueColor,
padding: const EdgeInsets.symmetric(horizontal: 16),
borderRadius: BorderRadius.circular(8),
onPressed: () {
if (manualCodeController.text.trim().isNotEmpty) {
rewardsController.linkInviteCode(manualCodeController.text.trim());
manualCodeController.clear();
} else {
mySnackeBarError('Please enter a referral code'.tr);
}
},
child: Text('Link'.tr, style: const TextStyle(color: Colors.white, fontSize: 14)),
),
],
),
],
),
);
}
Widget _buildPhoneInput() {
return Container(
decoration: BoxDecoration(
@@ -497,6 +666,7 @@ class InviteScreen extends StatelessWidget {
);
}
/*
Widget _buildPassengerStats(BuildContext context) {
return Container(
padding: const EdgeInsets.all(16),
@@ -559,6 +729,7 @@ class InviteScreen extends StatelessWidget {
),
);
}
*/
void _showContactsDialog(BuildContext context) {
showCupertinoModalPopup(

View File

@@ -40,21 +40,21 @@ class DeepLinkController extends GetxController {
}
void _processInviteCode(Uri uri) {
if (uri.queryParameters.containsKey('inviteCode')) {
String? inviteCode = uri.queryParameters['inviteCode'];
if (inviteCode != null && inviteCode.isNotEmpty) {
// دائماً نخزن الكود حتى لو لم يكن مسجلاً، ليتم استخدامه بعد التسجيل
box.write('inviteCode', inviteCode);
String? inviteCode = uri.queryParameters['code'] ??
uri.queryParameters['inviteCode'] ??
uri.queryParameters['ref'];
if (inviteCode != null && inviteCode.isNotEmpty) {
// دائماً نخزن الكود حتى لو لم يكن مسجلاً، ليتم استخدامه بعد التسجيل
box.write('inviteCode', inviteCode);
// إذا كان المستخدم مسجل دخول (يمتلك JWT)، نربط الدعوة فوراً
if (box.read('jwt') != null) {
try {
var rewardsController = Get.find<InvitesRewardsController>();
rewardsController.linkInviteCode(inviteCode);
} catch (e) {
var rewardsController = Get.put(InvitesRewardsController());
rewardsController.linkInviteCode(inviteCode);
}
// إذا كان المستخدم مسجل دخول (يمتلك JWT)، نربط الدعوة فوراً
if (box.read('jwt') != null) {
try {
var rewardsController = Get.find<InvitesRewardsController>();
rewardsController.linkInviteCode(inviteCode);
} catch (e) {
var rewardsController = Get.put(InvitesRewardsController());
rewardsController.linkInviteCode(inviteCode);
}
}
}

View File

@@ -227,7 +227,7 @@ ${AppLink.inviteRedirectUrl}?code=$couponCode&app=rider
"inviterPassengerPhone": formattedPhoneNumber,
});
if (response != 'failure') {
if (response != 'failure' && response is Map) {
var d = response;
Get.snackbar('Success'.tr, 'Invite sent successfully'.tr,
backgroundColor: Colors.green, colorText: Colors.white);
@@ -252,6 +252,7 @@ ${AppLink.inviteRedirectUrl}?code=$couponCode&app=rider
"${'Be sure to use it quickly! This code expires at'.tr} *$expirationTime*.\n\n"
"🔗 ${'Quick Invite Link:'.tr}\n"
"${AppLink.inviteRedirectUrl}?code=$inviteCode&app=rider\n\n"
"💡 ${'Note: If the link above is not clickable, please save this contact or reply to this message to activate all links.'.tr}\n\n"
"${'See you on the road!'.tr} 🚗";
launchCommunication('whatsapp', formattedPhoneNumber, message);

View File

@@ -1,6 +1,8 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:get/get.dart';
import 'package:share_plus/share_plus.dart';
import '../../../constant/colors.dart';
import '../../../constant/links.dart';
@@ -8,6 +10,7 @@ import '../../../constant/style.dart';
import '../../../controller/home/profile/invit_controller.dart';
import '../../../controller/home/profile/invites_rewards_controller.dart';
import '../../../print.dart';
import '../../widgets/error_snakbar.dart';
class ShareAppPage extends StatelessWidget {
final InviteController controller = Get.put(InviteController());
@@ -53,6 +56,10 @@ class ShareAppPage extends StatelessWidget {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildPermanentCodeCard(context),
const SizedBox(height: 10),
_buildManualCodeEntry(context),
const SizedBox(height: 20),
Container(
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
@@ -680,4 +687,161 @@ class ShareAppPage extends StatelessWidget {
},
);
}
Widget _buildPermanentCodeCard(BuildContext context) {
return GetBuilder<InvitesRewardsController>(
builder: (rc) {
String code = rc.referralCode ?? 'Loading...'.tr;
return Container(
width: double.infinity,
padding: const EdgeInsets.all(20),
margin: const EdgeInsets.symmetric(vertical: 10),
decoration: BoxDecoration(
color: AppColor.grayColor.withOpacity(0.08),
borderRadius: BorderRadius.circular(12),
border: Border.all(color: AppColor.cyanBlue.withOpacity(0.2)),
),
child: Column(
children: [
Text(
"Your Permanent Referral Code".tr,
style: TextStyle(
fontSize: 14,
color: AppColor.grayColor,
fontWeight: FontWeight.w500,
),
),
const SizedBox(height: 12),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
code,
style: TextStyle(
fontSize: 24,
fontWeight: FontWeight.bold,
color: AppColor.cyanBlue,
letterSpacing: 2,
),
),
if (rc.referralCode != null) ...[
const SizedBox(width: 16),
GestureDetector(
onTap: () {
Clipboard.setData(ClipboardData(text: rc.referralCode!));
mySnackbarSuccess('Code copied!'.tr);
},
child: Icon(
CupertinoIcons.doc_on_doc,
color: AppColor.cyanBlue,
size: 20,
),
),
],
],
),
if (rc.referralCode != null) ...[
const SizedBox(height: 16),
CupertinoButton(
color: AppColor.cyanBlue.withOpacity(0.1),
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 8),
borderRadius: BorderRadius.circular(8),
onPressed: () {
final appName = 'Siro';
final shareText = 'Get a ride with $appName! Use my referral code: ${rc.referralCode} for a discount.\nDownload: ${AppLink.inviteRedirectUrl}?code=${rc.referralCode}&app=rider\n\n💡 Note: If the link is not clickable, save this number or reply to activate links!';
Share.share(shareText);
},
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(CupertinoIcons.share, color: AppColor.cyanBlue, size: 18),
const SizedBox(width: 8),
Text(
'Share via WhatsApp Groups'.tr,
style: TextStyle(
color: AppColor.cyanBlue,
fontSize: 14,
fontWeight: FontWeight.bold,
),
),
],
),
),
],
],
),
);
},
);
}
Widget _buildManualCodeEntry(BuildContext context) {
final TextEditingController manualCodeController = TextEditingController();
return Container(
padding: const EdgeInsets.all(16),
margin: const EdgeInsets.symmetric(vertical: 10),
decoration: BoxDecoration(
color: AppColor.grayColor.withOpacity(0.08),
borderRadius: BorderRadius.circular(12),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Enter Inviter's Code".tr,
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.bold,
color: AppColor.writeColor,
),
),
const SizedBox(height: 8),
Text(
"If someone referred you, enter their code below to link accounts and receive rewards.".tr,
style: TextStyle(
fontSize: 12,
color: AppColor.grayColor,
),
),
const SizedBox(height: 12),
Row(
children: [
Expanded(
child: Container(
decoration: BoxDecoration(
color: AppColor.secondaryColor,
borderRadius: BorderRadius.circular(8),
border: Border.all(color: AppColor.grayColor.withOpacity(0.2)),
),
child: CupertinoTextField.borderless(
controller: manualCodeController,
placeholder: 'Enter Code (e.g. AB1234)'.tr,
placeholderStyle: TextStyle(color: AppColor.grayColor.withOpacity(0.5)),
style: TextStyle(color: AppColor.writeColor),
padding: const EdgeInsets.all(10),
textCapitalization: TextCapitalization.characters,
),
),
),
const SizedBox(width: 12),
CupertinoButton(
color: AppColor.cyanBlue,
padding: const EdgeInsets.symmetric(horizontal: 16),
borderRadius: BorderRadius.circular(8),
onPressed: () {
if (manualCodeController.text.trim().isNotEmpty) {
rewardsController.linkInviteCode(manualCodeController.text.trim());
manualCodeController.clear();
} else {
mySnackeBarError('Please enter a referral code'.tr);
}
},
child: Text('Link'.tr, style: const TextStyle(color: Colors.white, fontSize: 14)),
),
],
),
],
),
);
}
}

View File

@@ -127,6 +127,7 @@ $appConfig = $config[$appType];
<span class="text-3xl font-black tracking-widest text-cyan-400" id="refCode"><?php echo $code; ?></span>
<button class="px-5 py-2 text-xs font-bold bg-cyan-400/10 text-cyan-300 border border-cyan-400/20 hover:bg-cyan-400 hover:text-slate-950 rounded-full transition duration-300 cursor-pointer" onclick="copyReferralCode()" id="copy-btn">نسخ كود الإحالة</button>
<div id="copy-toast" class="hidden text-xs text-green-400 font-bold mt-1"></div>
<p class="text-xs text-slate-400 text-center leading-relaxed mt-2" id="referral-tip">💡 إذا لم تفتح الروابط تلقائياً، قم بنسخ هذا الكود يدوياً وأدخله في التطبيق بعد تحميله.</p>
</div>
<?php endif; ?>
@@ -198,6 +199,7 @@ $appConfig = $config[$appType];
referralLabel: "كود الإحالة الخاص بك",
copyBtn: "نسخ كود الإحالة",
copiedMsg: "تم نسخ كود الإحالة: ",
referralTip: "💡 إذا لم تفتح الروابط تلقائياً، قم بنسخ هذا الكود يدوياً وأدخله في التطبيق بعد تحميله.",
iosTitle: "🔒 متجر التطبيقات محظور",
iosDesc: "نظراً للقيود الجغرافية، يرجى تفعيل تطبيق الـ VPN على هاتفك أولاً، ثم الضغط على الزر بالأسفل للانتقال لصفحة التحميل الرسمية على متجر آبل.",
iosBtn: "التحميل من App Store",
@@ -221,6 +223,7 @@ $appConfig = $config[$appType];
referralLabel: "Your Referral Code",
copyBtn: "Copy Referral Code",
copiedMsg: "Referral code copied: ",
referralTip: "💡 If deep links don't open automatically, copy this code and enter it manually in the app after downloading.",
iosTitle: "🔒 App Store is Geo-Restricted",
iosDesc: "Due to local network restrictions, please enable a VPN on your device first, then click below to download from the Apple App Store.",
iosBtn: "Download from App Store",
@@ -287,6 +290,9 @@ $appConfig = $config[$appType];
const copyBtn = document.getElementById('copy-btn');
if (copyBtn) copyBtn.textContent = t.copyBtn;
const refTip = document.getElementById('referral-tip');
if (refTip) refTip.textContent = t.referralTip;
document.getElementById('ios-title').textContent = t.iosTitle;
document.getElementById('ios-desc').textContent = t.iosDesc;
document.querySelector('#ios-btn span').textContent = t.iosBtn;