@tera-system/core 0.2.6 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/MANIFEST.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tera-system/core",
3
- "version": "0.2.6",
3
+ "version": "0.2.7",
4
4
  "description": "Build manifest for the Tera System OpenCode Plugin component.",
5
5
  "compatibleEnvironments": [
6
6
  "opencode"
@@ -12,15 +12,15 @@
12
12
  "coreFiles": 111,
13
13
  "tools": 7,
14
14
  "projectControlTemplates": 1,
15
- "assets": 29
15
+ "assets": 32
16
16
  },
17
17
  "sha256": {
18
18
  "agents": "627368c85eb5ab840986b6e8a60b08977803b73c52c698662bc6cc68a1254b7c",
19
19
  "commands": "a2520ceef3a3f4e9cec2e4c070aeecd41a215ed12438f81d45111e6c801f9ec2",
20
- "core/tera-system": "527e36c620f68fe6c4c6056bd9345aca8f1c9eed7a028fe18d9b70c04dc1df51",
20
+ "core/tera-system": "f4615ea0737c9e0a96810d25a3acc232ec8a928be4ebfc0b2fae0c353129fbd8",
21
21
  "tools": "1f96a2de662c50c5c0a4c62d27ec583671c690163a0b35add036bfdd2b3a1f1a",
22
22
  "core/project-control": "cb979181d50e54c9b9b9173ffc890ca021bfaefe9678b1cad4a2f67ceac3dfdd",
23
- "assets": "8def8ca49522949e601a3bd325809d124c6135e4700e0b156d594f50f3886b7c"
23
+ "assets": "c34880f495642a785025a6d18df8d5c7b9145b8051863ffbe3cbd9095ff74c68"
24
24
  },
25
25
  "builtAt": "2026-08-29"
26
26
  }
package/RELEASES.md CHANGED
@@ -4,6 +4,19 @@
4
4
 
5
5
  ---
6
6
 
7
+ ## 0.2.7 (2026-08-29)
8
+
9
+ ### سندات القبض والصرف — تصميم معتمد ومنجز (SCP-2026-08-29-006)
10
+
11
+ **الجديد:**
12
+ - **`financial/VOUCHER_RECEIPT_TEMPLATE.html`** + **`VOUCHER_PAYMENT_TEMPLATE.html`** — سندات قبض/صرف بحجم دفاتر السندات المتعارف (1/3 A4 — 210×99مم، **3 سندات لكل صفحة A4**) مع خطوط قص متقطعة.
13
+ - الحقول المعتمدة: ترويسة Teranoo + رقم السند (تسلسل مالي `{السنة}-{تسلسل}`) + التاريخ + المستلم/المستفيد + المبلغ كتابةً وأرقاماً + **حقل المرجع (يربط بترميز خطابات العميل)** + طريقة الدفع + التوقيعات (مستلم/أمين صندوق/معتمد) + النسخ (أصل/صورة).
14
+ - `financial/VOUCHER_DESIGN_SPEC.md` — وثيقة التصميم المعتمدة.
15
+ - `TeraPricingPolicy §21` قاعدة 5 — توثيق الدفعات بسند قبض والمصروفات بسند صرف.
16
+ - assets 29→32.
17
+
18
+ ---
19
+
7
20
  ## 0.2.6 (2026-08-29)
8
21
 
9
22
  ### نظام ترميز الخطابات الصادرة للزبون (SCP-2026-08-29-005)
@@ -0,0 +1,92 @@
1
+ <!-- © 2026 Majed Khaireddin (Alabasi1980). Tera System — Proprietary. All rights reserved. -->
2
+
3
+ # VOUCHER_DESIGN_SPEC — التصميم المعتمد لسندات القبض والصرف
4
+
5
+ > **الحالة:** ✅ **معتمد ومُنجز** — قرار Majed 2026-08-29 (SCP-2026-08-29-006) + تنفيذ التصميم 2026-08-29
6
+ > **ملفات HTML:** `VOUCHER_RECEIPT_TEMPLATE.html` + `VOUCHER_PAYMENT_TEMPLATE.html` — **منجزة** (صممها حارس) في هذا المجلد — تحققت بنيوياً عبر المتصفح (3 سندات لكل صفحة، الحقول كاملة)
7
+ > **الاستخدام:** توثيق الدفعات (سند قبض) والمصروفات (سند صرف) — تُطبع كدفتر سندات بالحجم المتعارف عليه
8
+
9
+ ---
10
+
11
+ ## 1. الحجم والطباعة (المتعارف عليه — وليس A4)
12
+
13
+ | البند | المواصفة |
14
+ |---|---|
15
+ | **حجم السند الواحد** | **1/3 من صفحة A4** — 210 × 99 ملم (بعرض الصفحة، ثلث الارتفاع) — بحجم دفاتر سندات القبض والصرف المتعارف عليها |
16
+ | **لكل صفحة A4** | **3 سندات** (أفقية متراصة) مع خطوط قص متقطعة بينها |
17
+ | **إعداد الطباعة** | `@page { size: A4; margin: 0 }` — كل سند `width:210mm; height:99mm` — حدود `dashed` للقص |
18
+ | **الدفتر** | طباعة كمية → قص → تجليد/تدبيس → ترقيم تسلسلي (مسبق أو كتابي) |
19
+
20
+ > **ملاحظة قابلة للتعديل:** إن أردت مقاساً محدداً أدق (مثلاً 1/4 A4)، أخبرني بالمليمتر بالضبط — يُحدَّث التصميم ويبقى الباقي ثابتاً.
21
+
22
+ ---
23
+
24
+ ## 2. هيكل سند القبض (المعتمد)
25
+
26
+ ```
27
+ ┌──────────────────────────────────────────────────┐
28
+ │ [شعار Teranoo] سند قبض │
29
+ │ رقم السند: 2026-____ التاريخ: ____/____/____ │
30
+ ├──────────────────────────────────────────────────┤
31
+ │ استلمنا من: ______________________________________ │
32
+ │ │
33
+ │ مبلغ وقدره: ______________________________________ │
34
+ │ (دينار أردني: __________ JOD) │
35
+ │ المبلغ أرقاماً: [ ] JOD │
36
+ │ │
37
+ │ وذلك عن: __________________________________________ │
38
+ │ [البيان + مرجع العقد/الخطاب الرسمي — مثال: │
39
+ │ الدفعة الأولى 60% من عقد NPB-CON-2026-001] │
40
+ │ │
41
+ │ طريقة الدفع: [ ] نقدي [ ] تحويل بنكي [ ] شيك │
42
+ │ (تفاصيل: بنك/رقم العملية / رقم الشيك وتاريخه) │
43
+ ├──────────────────────────────────────────────────┤
44
+ │ المستلم:________ أمين الصندوق:________ │
45
+ │ المعتمد (المدير): ________ │
46
+ ├──────────────────────────────────────────────────┤
47
+ │ أصل (للعميل) [ ] │ صورة (للملف) [ ] │ صورة [ ] │
48
+ └──────────────────────────────────────────────────┘
49
+ ```
50
+
51
+ ## 3. هيكل سند الصرف (المعتمد — نفس الهيكل مع تبديل)
52
+
53
+ ```
54
+ استلمنا من → صرفنا إلى: [المستفيد]
55
+ وذلك عن → بيان الغرض/المصروف
56
+ التوقيعات: المستلم | أمين الصندوق | المعتمد (المدير)
57
+ ```
58
+
59
+ ---
60
+
61
+ ## 4. الترقيم والربط بنظام ترميز الخطابات
62
+
63
+ | البند | القاعدة |
64
+ |---|---|
65
+ | **رقم السند** | تسلسل **مالي مستقل**: `{السنة}-{تسلسل}` (مثال: `2026-0001`) — وليس من LETTER_LOG |
66
+ | **المرجع** | حقل إلزامي يربط السند بترميز خطابات العميل الرسمي (مثال: `NPB-CON-2026-001` / `NPB-LET-2026-001`) — تطبيق نظام الترميز (TeraClientPolicy §9.6) |
67
+ | **متى يُرقَّم** | طباعة مسبقة على الدفتر (متعارف عليه) أو كتابياً عند الاستخدام |
68
+
69
+ ---
70
+
71
+ ## 5. النسخ (دفتر الكربون التناظري)
72
+
73
+ - الدفتر الورقي المتعارف: كل سند = **أصل + صورة (كربون)**.
74
+ - في HTML: يُطبع السند مرتين لكل عملية — إحداهما بشارة **«أصل — للعميل»** والأخرى **«صورة — للملف»** — أو خانة اختيار النسخ كما في الهيكل.
75
+
76
+ ---
77
+
78
+ ## 6. ملاحظات أمان (إلزامية في التصميم)
79
+
80
+ 1. **لا حقول فارغة للتزوير**: المبلغ يُسطَّر، والخانات غير المستخدمة تُشطب.
81
+ 2. **توقيعان على الأقل**: المستلم + المعتمد (أمين الصندوق في الصرف).
82
+ 3. **المبلغ كتابةً وأرقاماً** مع تطابق إلزامي.
83
+ 4. تمييز النسخ (أصل/صورة) + خانة ختم إن وُجد.
84
+
85
+ ---
86
+
87
+ ## 7. الربط في المنظومة
88
+
89
+ - **المرجع الحاكم:** `tera-system/TeraPricingPolicy.md` §21 (شروط الدفع — الدفعات توثق بسند قبض).
90
+ - **خريطة السياسات:** صف سندات القبض/الصرف (TeraPolicyMap.md).
91
+ - **الترقيم:** تسلسل مالي مستقل + مرجع ترميز العميل (لا يدخل في LETTER_LOG).
92
+ - **ملفات الإخراج المتوقعة:** `VOUCHER_RECEIPT_TEMPLATE.html` + `VOUCHER_PAYMENT_TEMPLATE.html` (يصممها المالك).
@@ -0,0 +1,180 @@
1
+ <!DOCTYPE html>
2
+ <html lang="ar" dir="rtl">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>سند صرف — Teranoo (دفتر 1/3 A4)</title>
7
+ <style>
8
+ :root {
9
+ --ink: #17233c; --muted: #5c6784; --line: #dfe6f2; --soft: #f8faff;
10
+ --accent: #8c1f2f; --accent-soft: #fae8ec;
11
+ }
12
+ @page { size: A4; margin: 0; }
13
+ * { box-sizing: border-box; }
14
+ html, body { margin: 0; padding: 0; }
15
+ body { background: #eef2f7; color: var(--ink); font-family: "Segoe UI", Tahoma, Arial, sans-serif; line-height: 1.4; }
16
+
17
+ .usage-note { max-width: 620px; margin: 14px auto; padding: 10px 14px; background: #fff8e1; border: 1px solid #e6c84d; border-radius: 6px; font-size: 11px; color: #5b4a0a; }
18
+ .usage-note code { background: #f3ead0; padding: 1px 5px; border-radius: 3px; }
19
+
20
+ .sheet { width: 210mm; margin: 8px auto; background: #fff; box-shadow: 0 10px 30px rgba(15,23,42,.12); }
21
+ .voucher { position: relative; width: 210mm; height: 99mm; overflow: hidden; }
22
+ .voucher + .voucher { border-top: 1.5px dashed #9aa7c2; }
23
+
24
+ .v-head { display: flex; align-items: center; justify-content: space-between; padding: 3mm 5mm 2mm; background: var(--soft); border-bottom: 1.5px solid var(--accent); }
25
+ .v-brand { display: flex; align-items: center; gap: 2mm; }
26
+ .v-brand-mark { width: 7mm; height: 7mm; border-radius: 2mm; background: var(--accent); display: flex; align-items: center; justify-content: center; color: #fff; font-weight: 800; font-size: 9pt; }
27
+ .v-brand-name { font-weight: 800; font-size: 10pt; color: var(--accent); }
28
+ .v-title { font-weight: 800; font-size: 12.5pt; color: var(--ink); letter-spacing: .5px; }
29
+ .v-meta { text-align: left; font-size: 8pt; color: var(--muted); line-height: 1.5; }
30
+ .v-meta strong { color: var(--ink); }
31
+
32
+ .v-body { padding: 2.5mm 5mm 1.5mm; font-size: 9pt; }
33
+ .v-row { display: flex; align-items: baseline; gap: 2mm; margin-bottom: 1.8mm; }
34
+ .v-label { white-space: nowrap; font-weight: 700; color: var(--ink); }
35
+ .v-fill { flex: 1; min-width: 0; border-bottom: 1px dotted #a8b4cc; color: var(--muted); padding-bottom: .3mm; }
36
+ .v-amount { font-size: 10pt; font-weight: 700; }
37
+ .v-amount .v-fill { color: var(--ink); }
38
+ .v-cols { display: flex; gap: 5mm; }
39
+ .v-cols .col { flex: 1; min-width: 0; }
40
+ .v-pay-options { display: flex; gap: 3mm; align-items: center; flex-wrap: wrap; }
41
+ .v-check { display: inline-flex; gap: 1mm; align-items: baseline; white-space: nowrap; }
42
+ .v-check .box { display: inline-block; width: 3.2mm; height: 3.2mm; border: 1px solid var(--muted); border-radius: .6mm; flex-shrink: 0; }
43
+
44
+ .v-foot { display: flex; align-items: flex-end; justify-content: space-between; padding: 0 5mm 2.5mm; }
45
+ .v-sign { flex: 1; }
46
+ .v-sign-label { font-size: 7.5pt; font-weight: 700; color: var(--muted); margin-bottom: 5mm; }
47
+ .v-sign-line { border-top: 1px solid var(--ink); padding-top: .5mm; font-size: 7pt; color: var(--muted); }
48
+ .v-copy { text-align: center; font-size: 7.5pt; color: var(--muted); }
49
+ .v-copy .cbox { display: inline-block; width: 3mm; height: 3mm; border: 1px solid var(--muted); border-radius: .5mm; vertical-align: middle; margin: 0 1mm; }
50
+
51
+ @media print {
52
+ body { background: #fff; }
53
+ .usage-note { display: none; }
54
+ .sheet { margin: 0; box-shadow: none; }
55
+ .voucher { break-inside: avoid; page-break-inside: avoid; }
56
+ .sheet { page-break-after: always; }
57
+ .sheet:last-child { page-break-after: auto; }
58
+ }
59
+ </style>
60
+ </head>
61
+ <body>
62
+
63
+ <div class="usage-note">
64
+ <strong>طريقة الاستخدام:</strong> افتح الملف في المتصفح ← <code>Ctrl+P</code> ← الحجم A4 ← الهامش <code>None</code> ← المقياس <code>100%</code> ← طباعة.
65
+ كل صفحة تحتوي <strong>3 سندات</strong> (1/3 A4) تُقص على الخطوط المتقطعة. للدفتر: اطبع عدد الصفحات المطلوب، اقصّ، وجمّع كدفتر. رقم السند يُعبأ عند الاستخدام (أو يُطبع مسبقاً).
66
+ </div>
67
+
68
+ <!-- صفحة 1 — 3 سندات صرف -->
69
+ <section class="sheet">
70
+ <div class="voucher">
71
+ <div class="v-head">
72
+ <div class="v-brand"><div class="v-brand-mark">T</div><span class="v-brand-name">Teranoo — تيرا</span></div>
73
+ <div class="v-title">سند صرف</div>
74
+ <div class="v-meta"><strong>رقم السند:</strong> 2026-______<br><strong>التاريخ:</strong> ___/___/_______</div>
75
+ </div>
76
+ <div class="v-body">
77
+ <div class="v-row"><span class="v-label">صرفنا إلى:</span><span class="v-fill">&nbsp;</span></div>
78
+ <div class="v-row v-amount"><span class="v-label">مبلغ وقدره:</span><span class="v-fill">&nbsp;</span><span class="v-label">دينار أردني</span></div>
79
+ <div class="v-cols">
80
+ <div class="col">
81
+ <div class="v-row"><span class="v-label">المبلغ أرقاماً:</span><span class="v-fill">&nbsp;</span><span class="v-label">JOD</span></div>
82
+ <div class="v-row"><span class="v-label">الغرض / البيان:</span><span class="v-fill">&nbsp;</span></div>
83
+ </div>
84
+ <div class="col">
85
+ <div class="v-row"><span class="v-label">المرجع (مشروع/عقد):</span><span class="v-fill">&nbsp;</span></div>
86
+ <div class="v-row">
87
+ <span class="v-label">طريقة الدفع:</span>
88
+ <span class="v-pay-options">
89
+ <span class="v-check"><span class="box"></span> نقدي</span>
90
+ <span class="v-check"><span class="box"></span> تحويل</span>
91
+ <span class="v-check"><span class="box"></span> شيك</span>
92
+ </span>
93
+ </div>
94
+ <div class="v-row"><span class="v-label">تفاصيل (بنك/شيك):</span><span class="v-fill">&nbsp;</span></div>
95
+ </div>
96
+ </div>
97
+ </div>
98
+ <div class="v-foot">
99
+ <div class="v-sign"><div class="v-sign-label">المستلم</div><div class="v-sign-line">الاسم / التوقيع</div></div>
100
+ <div class="v-sign"><div class="v-sign-label">أمين الصندوق</div><div class="v-sign-line">الاسم / التوقيع</div></div>
101
+ <div class="v-sign"><div class="v-sign-label">المعتمد (المدير)</div><div class="v-sign-line">الاسم / التوقيع</div></div>
102
+ <div class="v-copy">أصل (للملف)<span class="cbox"></span><br>صورة (للصرف)<span class="cbox"></span></div>
103
+ </div>
104
+ </div>
105
+
106
+ <div class="voucher">
107
+ <div class="v-head">
108
+ <div class="v-brand"><div class="v-brand-mark">T</div><span class="v-brand-name">Teranoo — تيرا</span></div>
109
+ <div class="v-title">سند صرف</div>
110
+ <div class="v-meta"><strong>رقم السند:</strong> 2026-______<br><strong>التاريخ:</strong> ___/___/_______</div>
111
+ </div>
112
+ <div class="v-body">
113
+ <div class="v-row"><span class="v-label">صرفنا إلى:</span><span class="v-fill">&nbsp;</span></div>
114
+ <div class="v-row v-amount"><span class="v-label">مبلغ وقدره:</span><span class="v-fill">&nbsp;</span><span class="v-label">دينار أردني</span></div>
115
+ <div class="v-cols">
116
+ <div class="col">
117
+ <div class="v-row"><span class="v-label">المبلغ أرقاماً:</span><span class="v-fill">&nbsp;</span><span class="v-label">JOD</span></div>
118
+ <div class="v-row"><span class="v-label">الغرض / البيان:</span><span class="v-fill">&nbsp;</span></div>
119
+ </div>
120
+ <div class="col">
121
+ <div class="v-row"><span class="v-label">المرجع (مشروع/عقد):</span><span class="v-fill">&nbsp;</span></div>
122
+ <div class="v-row">
123
+ <span class="v-label">طريقة الدفع:</span>
124
+ <span class="v-pay-options">
125
+ <span class="v-check"><span class="box"></span> نقدي</span>
126
+ <span class="v-check"><span class="box"></span> تحويل</span>
127
+ <span class="v-check"><span class="box"></span> شيك</span>
128
+ </span>
129
+ </div>
130
+ <div class="v-row"><span class="v-label">تفاصيل (بنك/شيك):</span><span class="v-fill">&nbsp;</span></div>
131
+ </div>
132
+ </div>
133
+ </div>
134
+ <div class="v-foot">
135
+ <div class="v-sign"><div class="v-sign-label">المستلم</div><div class="v-sign-line">الاسم / التوقيع</div></div>
136
+ <div class="v-sign"><div class="v-sign-label">أمين الصندوق</div><div class="v-sign-line">الاسم / التوقيع</div></div>
137
+ <div class="v-sign"><div class="v-sign-label">المعتمد (المدير)</div><div class="v-sign-line">الاسم / التوقيع</div></div>
138
+ <div class="v-copy">أصل (للملف)<span class="cbox"></span><br>صورة (للصرف)<span class="cbox"></span></div>
139
+ </div>
140
+ </div>
141
+
142
+ <div class="voucher">
143
+ <div class="v-head">
144
+ <div class="v-brand"><div class="v-brand-mark">T</div><span class="v-brand-name">Teranoo — تيرا</span></div>
145
+ <div class="v-title">سند صرف</div>
146
+ <div class="v-meta"><strong>رقم السند:</strong> 2026-______<br><strong>التاريخ:</strong> ___/___/_______</div>
147
+ </div>
148
+ <div class="v-body">
149
+ <div class="v-row"><span class="v-label">صرفنا إلى:</span><span class="v-fill">&nbsp;</span></div>
150
+ <div class="v-row v-amount"><span class="v-label">مبلغ وقدره:</span><span class="v-fill">&nbsp;</span><span class="v-label">دينار أردني</span></div>
151
+ <div class="v-cols">
152
+ <div class="col">
153
+ <div class="v-row"><span class="v-label">المبلغ أرقاماً:</span><span class="v-fill">&nbsp;</span><span class="v-label">JOD</span></div>
154
+ <div class="v-row"><span class="v-label">الغرض / البيان:</span><span class="v-fill">&nbsp;</span></div>
155
+ </div>
156
+ <div class="col">
157
+ <div class="v-row"><span class="v-label">المرجع (مشروع/عقد):</span><span class="v-fill">&nbsp;</span></div>
158
+ <div class="v-row">
159
+ <span class="v-label">طريقة الدفع:</span>
160
+ <span class="v-pay-options">
161
+ <span class="v-check"><span class="box"></span> نقدي</span>
162
+ <span class="v-check"><span class="box"></span> تحويل</span>
163
+ <span class="v-check"><span class="box"></span> شيك</span>
164
+ </span>
165
+ </div>
166
+ <div class="v-row"><span class="v-label">تفاصيل (بنك/شيك):</span><span class="v-fill">&nbsp;</span></div>
167
+ </div>
168
+ </div>
169
+ </div>
170
+ <div class="v-foot">
171
+ <div class="v-sign"><div class="v-sign-label">المستلم</div><div class="v-sign-line">الاسم / التوقيع</div></div>
172
+ <div class="v-sign"><div class="v-sign-label">أمين الصندوق</div><div class="v-sign-line">الاسم / التوقيع</div></div>
173
+ <div class="v-sign"><div class="v-sign-label">المعتمد (المدير)</div><div class="v-sign-line">الاسم / التوقيع</div></div>
174
+ <div class="v-copy">أصل (للملف)<span class="cbox"></span><br>صورة (للصرف)<span class="cbox"></span></div>
175
+ </div>
176
+ </div>
177
+ </section>
178
+
179
+ </body>
180
+ </html>
@@ -0,0 +1,183 @@
1
+ <!DOCTYPE html>
2
+ <html lang="ar" dir="rtl">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>سند قبض — Teranoo (دفتر 1/3 A4)</title>
7
+ <style>
8
+ :root {
9
+ --ink: #17233c; --muted: #5c6784; --line: #dfe6f2; --soft: #f8faff;
10
+ --accent: #1f4e8c; --accent-soft: #e8f0fa;
11
+ }
12
+ @page { size: A4; margin: 0; }
13
+ * { box-sizing: border-box; }
14
+ html, body { margin: 0; padding: 0; }
15
+ body { background: #eef2f7; color: var(--ink); font-family: "Segoe UI", Tahoma, Arial, sans-serif; line-height: 1.4; }
16
+
17
+ .usage-note { max-width: 620px; margin: 14px auto; padding: 10px 14px; background: #fff8e1; border: 1px solid #e6c84d; border-radius: 6px; font-size: 11px; color: #5b4a0a; }
18
+ .usage-note code { background: #f3ead0; padding: 1px 5px; border-radius: 3px; }
19
+
20
+ .sheet { width: 210mm; margin: 8px auto; background: #fff; box-shadow: 0 10px 30px rgba(15,23,42,.12); }
21
+ .voucher { position: relative; width: 210mm; height: 99mm; overflow: hidden; }
22
+ .voucher + .voucher { border-top: 1.5px dashed #9aa7c2; }
23
+
24
+ /* header strip */
25
+ .v-head { display: flex; align-items: center; justify-content: space-between; padding: 3mm 5mm 2mm; background: var(--soft); border-bottom: 1.5px solid var(--accent); }
26
+ .v-brand { display: flex; align-items: center; gap: 2mm; }
27
+ .v-brand-mark { width: 7mm; height: 7mm; border-radius: 2mm; background: var(--accent); display: flex; align-items: center; justify-content: center; color: #fff; font-weight: 800; font-size: 9pt; }
28
+ .v-brand-name { font-weight: 800; font-size: 10pt; color: var(--accent); }
29
+ .v-title { font-weight: 800; font-size: 12.5pt; color: var(--ink); letter-spacing: .5px; }
30
+ .v-meta { text-align: left; font-size: 8pt; color: var(--muted); line-height: 1.5; }
31
+ .v-meta strong { color: var(--ink); }
32
+
33
+ /* body */
34
+ .v-body { padding: 2.5mm 5mm 1.5mm; font-size: 9pt; }
35
+ .v-row { display: flex; align-items: baseline; gap: 2mm; margin-bottom: 1.8mm; }
36
+ .v-label { white-space: nowrap; font-weight: 700; color: var(--ink); }
37
+ .v-fill { flex: 1; min-width: 0; border-bottom: 1px dotted #a8b4cc; color: var(--muted); padding-bottom: .3mm; }
38
+ .v-amount { font-size: 10pt; font-weight: 700; }
39
+ .v-amount .v-fill { color: var(--ink); }
40
+ .v-cols { display: flex; gap: 5mm; }
41
+ .v-cols .col { flex: 1; min-width: 0; }
42
+ .v-pay-options { display: flex; gap: 3mm; align-items: center; flex-wrap: wrap; }
43
+ .v-check { display: inline-flex; gap: 1mm; align-items: baseline; white-space: nowrap; }
44
+ .v-check .box { display: inline-block; width: 3.2mm; height: 3.2mm; border: 1px solid var(--muted); border-radius: .6mm; flex-shrink: 0; }
45
+
46
+ /* footer */
47
+ .v-foot { display: flex; align-items: flex-end; justify-content: space-between; padding: 0 5mm 2.5mm; }
48
+ .v-sign { flex: 1; }
49
+ .v-sign-label { font-size: 7.5pt; font-weight: 700; color: var(--muted); margin-bottom: 5mm; }
50
+ .v-sign-line { border-top: 1px solid var(--ink); padding-top: .5mm; font-size: 7pt; color: var(--muted); }
51
+ .v-copy { text-align: center; font-size: 7.5pt; color: var(--muted); }
52
+ .v-copy .cbox { display: inline-block; width: 3mm; height: 3mm; border: 1px solid var(--muted); border-radius: .5mm; vertical-align: middle; margin: 0 1mm; }
53
+
54
+ @media print {
55
+ body { background: #fff; }
56
+ .usage-note { display: none; }
57
+ .sheet { margin: 0; box-shadow: none; }
58
+ .voucher { break-inside: avoid; page-break-inside: avoid; }
59
+ .sheet { page-break-after: always; }
60
+ .sheet:last-child { page-break-after: auto; }
61
+ }
62
+ </style>
63
+ </head>
64
+ <body>
65
+
66
+ <div class="usage-note">
67
+ <strong>طريقة الاستخدام:</strong> افتح الملف في المتصفح ← <code>Ctrl+P</code> ← الحجم A4 ← الهامش <code>None</code> ← المقياس <code>100%</code> ← طباعة.
68
+ كل صفحة تحتوي <strong>3 سندات</strong> (1/3 A4) تُقص على الخطوط المتقطعة. للدفتر: اطبع عدد الصفحات المطلوب، اقصّ، وجمّع كدفتر. رقم السند يُعبأ عند الاستخدام (أو يُطبع مسبقاً).
69
+ </div>
70
+
71
+ <!-- صفحة 1 — 3 سندات قبض -->
72
+ <section class="sheet">
73
+ <div class="voucher">
74
+ <div class="v-head">
75
+ <div class="v-brand"><div class="v-brand-mark">T</div><span class="v-brand-name">Teranoo — تيرا</span></div>
76
+ <div class="v-title">سند قبض</div>
77
+ <div class="v-meta"><strong>رقم السند:</strong> 2026-______<br><strong>التاريخ:</strong> ___/___/_______</div>
78
+ </div>
79
+ <div class="v-body">
80
+ <div class="v-row"><span class="v-label">استلمنا من:</span><span class="v-fill">&nbsp;</span></div>
81
+ <div class="v-row v-amount"><span class="v-label">مبلغ وقدره:</span><span class="v-fill">&nbsp;</span><span class="v-label">دينار أردني</span></div>
82
+ <div class="v-cols">
83
+ <div class="col">
84
+ <div class="v-row"><span class="v-label">المبلغ أرقاماً:</span><span class="v-fill">&nbsp;</span><span class="v-label">JOD</span></div>
85
+ <div class="v-row"><span class="v-label">وذلك عن:</span><span class="v-fill">&nbsp;</span></div>
86
+ </div>
87
+ <div class="col">
88
+ <div class="v-row"><span class="v-label">المرجع (عقد/خطاب):</span><span class="v-fill">&nbsp;</span></div>
89
+ <div class="v-row">
90
+ <span class="v-label">طريقة الدفع:</span>
91
+ <span class="v-pay-options">
92
+ <span class="v-check"><span class="box"></span> نقدي</span>
93
+ <span class="v-check"><span class="box"></span> تحويل</span>
94
+ <span class="v-check"><span class="box"></span> شيك</span>
95
+ </span>
96
+ </div>
97
+ <div class="v-row"><span class="v-label">تفاصيل (بنك/شيك):</span><span class="v-fill">&nbsp;</span></div>
98
+ </div>
99
+ </div>
100
+ </div>
101
+ <div class="v-foot">
102
+ <div class="v-sign"><div class="v-sign-label">المستلم</div><div class="v-sign-line">الاسم / التوقيع</div></div>
103
+ <div class="v-sign"><div class="v-sign-label">أمين الصندوق</div><div class="v-sign-line">الاسم / التوقيع</div></div>
104
+ <div class="v-sign"><div class="v-sign-label">المعتمد (المدير)</div><div class="v-sign-line">الاسم / التوقيع</div></div>
105
+ <div class="v-copy">أصل (للعميل)<span class="cbox"></span><br>صورة (للملف)<span class="cbox"></span></div>
106
+ </div>
107
+ </div>
108
+
109
+ <div class="voucher">
110
+ <div class="v-head">
111
+ <div class="v-brand"><div class="v-brand-mark">T</div><span class="v-brand-name">Teranoo — تيرا</span></div>
112
+ <div class="v-title">سند قبض</div>
113
+ <div class="v-meta"><strong>رقم السند:</strong> 2026-______<br><strong>التاريخ:</strong> ___/___/_______</div>
114
+ </div>
115
+ <div class="v-body">
116
+ <div class="v-row"><span class="v-label">استلمنا من:</span><span class="v-fill">&nbsp;</span></div>
117
+ <div class="v-row v-amount"><span class="v-label">مبلغ وقدره:</span><span class="v-fill">&nbsp;</span><span class="v-label">دينار أردني</span></div>
118
+ <div class="v-cols">
119
+ <div class="col">
120
+ <div class="v-row"><span class="v-label">المبلغ أرقاماً:</span><span class="v-fill">&nbsp;</span><span class="v-label">JOD</span></div>
121
+ <div class="v-row"><span class="v-label">وذلك عن:</span><span class="v-fill">&nbsp;</span></div>
122
+ </div>
123
+ <div class="col">
124
+ <div class="v-row"><span class="v-label">المرجع (عقد/خطاب):</span><span class="v-fill">&nbsp;</span></div>
125
+ <div class="v-row">
126
+ <span class="v-label">طريقة الدفع:</span>
127
+ <span class="v-pay-options">
128
+ <span class="v-check"><span class="box"></span> نقدي</span>
129
+ <span class="v-check"><span class="box"></span> تحويل</span>
130
+ <span class="v-check"><span class="box"></span> شيك</span>
131
+ </span>
132
+ </div>
133
+ <div class="v-row"><span class="v-label">تفاصيل (بنك/شيك):</span><span class="v-fill">&nbsp;</span></div>
134
+ </div>
135
+ </div>
136
+ </div>
137
+ <div class="v-foot">
138
+ <div class="v-sign"><div class="v-sign-label">المستلم</div><div class="v-sign-line">الاسم / التوقيع</div></div>
139
+ <div class="v-sign"><div class="v-sign-label">أمين الصندوق</div><div class="v-sign-line">الاسم / التوقيع</div></div>
140
+ <div class="v-sign"><div class="v-sign-label">المعتمد (المدير)</div><div class="v-sign-line">الاسم / التوقيع</div></div>
141
+ <div class="v-copy">أصل (للعميل)<span class="cbox"></span><br>صورة (للملف)<span class="cbox"></span></div>
142
+ </div>
143
+ </div>
144
+
145
+ <div class="voucher">
146
+ <div class="v-head">
147
+ <div class="v-brand"><div class="v-brand-mark">T</div><span class="v-brand-name">Teranoo — تيرا</span></div>
148
+ <div class="v-title">سند قبض</div>
149
+ <div class="v-meta"><strong>رقم السند:</strong> 2026-______<br><strong>التاريخ:</strong> ___/___/_______</div>
150
+ </div>
151
+ <div class="v-body">
152
+ <div class="v-row"><span class="v-label">استلمنا من:</span><span class="v-fill">&nbsp;</span></div>
153
+ <div class="v-row v-amount"><span class="v-label">مبلغ وقدره:</span><span class="v-fill">&nbsp;</span><span class="v-label">دينار أردني</span></div>
154
+ <div class="v-cols">
155
+ <div class="col">
156
+ <div class="v-row"><span class="v-label">المبلغ أرقاماً:</span><span class="v-fill">&nbsp;</span><span class="v-label">JOD</span></div>
157
+ <div class="v-row"><span class="v-label">وذلك عن:</span><span class="v-fill">&nbsp;</span></div>
158
+ </div>
159
+ <div class="col">
160
+ <div class="v-row"><span class="v-label">المرجع (عقد/خطاب):</span><span class="v-fill">&nbsp;</span></div>
161
+ <div class="v-row">
162
+ <span class="v-label">طريقة الدفع:</span>
163
+ <span class="v-pay-options">
164
+ <span class="v-check"><span class="box"></span> نقدي</span>
165
+ <span class="v-check"><span class="box"></span> تحويل</span>
166
+ <span class="v-check"><span class="box"></span> شيك</span>
167
+ </span>
168
+ </div>
169
+ <div class="v-row"><span class="v-label">تفاصيل (بنك/شيك):</span><span class="v-fill">&nbsp;</span></div>
170
+ </div>
171
+ </div>
172
+ </div>
173
+ <div class="v-foot">
174
+ <div class="v-sign"><div class="v-sign-label">المستلم</div><div class="v-sign-line">الاسم / التوقيع</div></div>
175
+ <div class="v-sign"><div class="v-sign-label">أمين الصندوق</div><div class="v-sign-line">الاسم / التوقيع</div></div>
176
+ <div class="v-sign"><div class="v-sign-label">المعتمد (المدير)</div><div class="v-sign-line">الاسم / التوقيع</div></div>
177
+ <div class="v-copy">أصل (للعميل)<span class="cbox"></span><br>صورة (للملف)<span class="cbox"></span></div>
178
+ </div>
179
+ </div>
180
+ </section>
181
+
182
+ </body>
183
+ </html>
@@ -107,6 +107,7 @@ Project files record project-specific decisions.
107
107
  | Tera distribution (versioned) | `tera-system/TERA_DISTRIBUTION_POLICY.md` | `.tera/lock.json` في مستودعات العملاء | توزيع Tera المُروّس على مستودعات العملاء: استمداد من المستودع الأصلي (`tera-fetch.ps1` + RepositoryUrl)، إصدارات (Tag+SHA)، عقد ملكية، أدوات `tera-workshop/tools/`. SCP-2026-08-15-009. |
108
108
  | Source code ownership & pricing | `tera-system/TeraPricingPolicy.md` (§31) + `tera-system/TeraClientPolicy.md` (§9.5) | `tera-workshop/client-templates/contractual/SOURCE_CODE_PURCHASE_ADDENDUM_TEMPLATE.md`، `SOFTWARE_SERVICES_AGREEMENT` §12 | ملكية السورس افتراضياً لـ Tera (لا يُسلَّم للزبون) + خيارا L1 (40%) / L2 (max(3×، 1,000 JOD)) عبر ملحق تعاقدي + L3 (إعادة بيع) مرفوض افتراضياً. SCP-2026-08-29-004. |
109
109
  | Client letter numbering | `tera-system/TeraClientPolicy.md` (§9.6) + `project-control/CLIENT_CODES.md` | `client-approval/LETTER_LOG.md` في مستودع العميل | ترميز موحد `{كود-العميل}-{النوع}-{السنة}-{التسلسل}` — كود العميل يخصّصه Majed فقط (سجل مركزي) — الأنواع LET/CON/ADD/PAL/DOC/TPL (قابلة للزيادة). SCP-2026-08-29-005. |
110
+ | Payment/Receipt vouchers | `tera-workshop/client-templates/financial/VOUCHER_DESIGN_SPEC.md` + `tera-system/TeraPricingPolicy.md` (§21) | `VOUCHER_RECEIPT_TEMPLATE.html` + `VOUCHER_PAYMENT_TEMPLATE.html` (يصممهما المالك) | سند قبض + سند صرف بحجم الدفاتر المتعارف (1/3 A4 — 210×99مم، 3 لكل صفحة) — ترقيم مالي مستقل `{السنة}-{تسلسل}` + حقل مرجع يربط بترميز خطابات العميل. SCP-2026-08-29-006. |
110
111
 
111
112
  ## 4. Duplication Policy
112
113
 
@@ -514,6 +514,7 @@ Minimum Engagement Fee = 100 JOD
514
514
  2. لا يتم تسليم الملفات النهائية أو صلاحيات الإنتاج قبل تسوية دفعة التسليم.
515
515
  3. أي تكلفة طرف ثالث تُدفع مقدمًا من العميل أو تُضاف قبل التنفيذ.
516
516
  4. التأخير في الدفع يوقف التنفيذ دون اعتبار ذلك تأخيرًا من جهة المنفذ.
517
+ 5. **تُوثَّق كل دفعة مستلمة بسند قبض رسمي، وكل مصروف بسند صرف** — وفق التصميم المعتمد `tera-workshop/client-templates/financial/VOUCHER_DESIGN_SPEC.md` (SCP-2026-08-29-006): ترقيم مالي مستقل `{السنة}-{تسلسل}` + حقل مرجع يربط بترميز خطابات العميل (مثال: NPB-CON-2026-001).
517
518
 
518
519
  ---
519
520
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tera-system/core",
3
- "version": "0.2.6",
3
+ "version": "0.2.7",
4
4
  "description": "Tera System OpenCode Plugin أ¢â‚¬â€‌ governance core, 20 agents, 11 commands, distribution tools (personal edition)",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "type": "module",
@@ -40,4 +40,3 @@
40
40
  "access": "public"
41
41
  }
42
42
  }
43
-