@tera-system/core 0.2.5 → 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 +5 -5
- package/RELEASES.md +26 -0
- package/agents/tera-client-engagement.md +1 -0
- package/assets/tera-workshop/client-templates/financial/VOUCHER_DESIGN_SPEC.md +92 -0
- package/assets/tera-workshop/client-templates/financial/VOUCHER_PAYMENT_TEMPLATE.html +180 -0
- package/assets/tera-workshop/client-templates/financial/VOUCHER_RECEIPT_TEMPLATE.html +183 -0
- package/core/tera-system/TeraClientPolicy.md +52 -0
- package/core/tera-system/TeraPolicyMap.md +2 -0
- package/core/tera-system/TeraPricingPolicy.md +1 -0
- package/package.json +2 -2
package/MANIFEST.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tera-system/core",
|
|
3
|
-
"version": "0.2.
|
|
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":
|
|
15
|
+
"assets": 32
|
|
16
16
|
},
|
|
17
17
|
"sha256": {
|
|
18
|
-
"agents": "
|
|
18
|
+
"agents": "627368c85eb5ab840986b6e8a60b08977803b73c52c698662bc6cc68a1254b7c",
|
|
19
19
|
"commands": "a2520ceef3a3f4e9cec2e4c070aeecd41a215ed12438f81d45111e6c801f9ec2",
|
|
20
|
-
"core/tera-system": "
|
|
20
|
+
"core/tera-system": "f4615ea0737c9e0a96810d25a3acc232ec8a928be4ebfc0b2fae0c353129fbd8",
|
|
21
21
|
"tools": "1f96a2de662c50c5c0a4c62d27ec583671c690163a0b35add036bfdd2b3a1f1a",
|
|
22
22
|
"core/project-control": "cb979181d50e54c9b9b9173ffc890ca021bfaefe9678b1cad4a2f67ceac3dfdd",
|
|
23
|
-
"assets": "
|
|
23
|
+
"assets": "c34880f495642a785025a6d18df8d5c7b9145b8051863ffbe3cbd9095ff74c68"
|
|
24
24
|
},
|
|
25
25
|
"builtAt": "2026-08-29"
|
|
26
26
|
}
|
package/RELEASES.md
CHANGED
|
@@ -4,6 +4,32 @@
|
|
|
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
|
+
|
|
20
|
+
## 0.2.6 (2026-08-29)
|
|
21
|
+
|
|
22
|
+
### نظام ترميز الخطابات الصادرة للزبون (SCP-2026-08-29-005)
|
|
23
|
+
|
|
24
|
+
**الجديد:**
|
|
25
|
+
- **صيغة رسمية موحدة:** `{كود-العميل}-{النوع}-{السنة}-{التسلسل}` (مثال: NPB-LET-2026-004) — عبر كل المشاريع والمستودعات.
|
|
26
|
+
- **كود العميل من Majed فقط** — سجل مركزي `project-control/CLIENT_CODES.md` (المصدر الوحيد)، وحارس يرفع طلب كود لكل عميل جديد — الفريدية بنيوية (لا تكرار عبر المستودعات).
|
|
27
|
+
- **أنواع وثائق رسمية** (قابلة للزيادة بقرار Majed): LET / CON / ADD / PAL / DOC / TPL.
|
|
28
|
+
- **سجل خطابات العميل** `client-approval/LETTER_LOG.md` إلزامي — مصدر التسلسل المحلي، يُسجَّل قبل الإرسال.
|
|
29
|
+
- القاعدة في تدفق TCEA (A.4) + TeraClientPolicy §9.6 + خريطة السياسات.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
7
33
|
## 0.2.5 (2026-08-29)
|
|
8
34
|
|
|
9
35
|
### ملكية السورس كود + سياسة التسعير (SCP-2026-08-29-004)
|
|
@@ -226,6 +226,7 @@ Majed يفتحك ← حوار استكشافي ← Websearch عن التطبيق
|
|
|
226
226
|
← **سجّل كل قرار في CLIENT_DECISION_LOG.md (C.5, B.5)** — بحالة Approved/Deferred/Conditional/Pending Approval
|
|
227
227
|
← **طبّق Final Scope Reconciliation Gate (B.3)** — وحّد حالة كل ميزة في FEATURE_LIST.md
|
|
228
228
|
← **ملكية السورس (SCP-2026-08-29-004):** سؤال توقع السورس في Domain 13 إلزامي قبل التسعير — الافتراضي: السورس ملك Tera ولا يُسلَّم. إذا توقعه الزبون → قدّم L1/L2 كبند منفصل بموافقة Majed (TeraPricingPolicy §31) — وإعادة البيع مرفوضة افتراضياً
|
|
229
|
+
← **ترميز الخطابات (SCP-2026-08-29-005):** لا تُرسل أي مراسلة رسمية للزبون دون رقم رسمي بصيغة `{كود-العميل}-{النوع}-{السنة}-{التسلسل}` — كود العميل من Majed حصراً (سجل CLIENT_CODES المركزي — لا يُخترع ولا يُستنتج)، والتسلسل من `client-approval/LETTER_LOG.md` المحلي — أنشئ السجل وسجّل كل خطاب قبل إرساله (الأنواع: LET/CON/ADD/PAL/DOC/TPL — راجع TeraClientPolicy §9.6)
|
|
229
230
|
← التحقق من Quotation Readiness Gate (B.4) قبل DRAFT_QUOTATION.md
|
|
230
231
|
← إنتاج DRAFT_QUOTATION.md (Level 2) ← Majed يراجع ويعتمد
|
|
231
232
|
← **تأكيد Workspace Plan مع Majed (المسار: clients/CLIENT-NAME/applications/APP-NAME/، الاسم الرسمي، الهيكل المتوقع — تخطيط فقط لا إنشاء مجلدات)**
|
|
@@ -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"> </span></div>
|
|
78
|
+
<div class="v-row v-amount"><span class="v-label">مبلغ وقدره:</span><span class="v-fill"> </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"> </span><span class="v-label">JOD</span></div>
|
|
82
|
+
<div class="v-row"><span class="v-label">الغرض / البيان:</span><span class="v-fill"> </span></div>
|
|
83
|
+
</div>
|
|
84
|
+
<div class="col">
|
|
85
|
+
<div class="v-row"><span class="v-label">المرجع (مشروع/عقد):</span><span class="v-fill"> </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"> </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"> </span></div>
|
|
114
|
+
<div class="v-row v-amount"><span class="v-label">مبلغ وقدره:</span><span class="v-fill"> </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"> </span><span class="v-label">JOD</span></div>
|
|
118
|
+
<div class="v-row"><span class="v-label">الغرض / البيان:</span><span class="v-fill"> </span></div>
|
|
119
|
+
</div>
|
|
120
|
+
<div class="col">
|
|
121
|
+
<div class="v-row"><span class="v-label">المرجع (مشروع/عقد):</span><span class="v-fill"> </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"> </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"> </span></div>
|
|
150
|
+
<div class="v-row v-amount"><span class="v-label">مبلغ وقدره:</span><span class="v-fill"> </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"> </span><span class="v-label">JOD</span></div>
|
|
154
|
+
<div class="v-row"><span class="v-label">الغرض / البيان:</span><span class="v-fill"> </span></div>
|
|
155
|
+
</div>
|
|
156
|
+
<div class="col">
|
|
157
|
+
<div class="v-row"><span class="v-label">المرجع (مشروع/عقد):</span><span class="v-fill"> </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"> </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"> </span></div>
|
|
81
|
+
<div class="v-row v-amount"><span class="v-label">مبلغ وقدره:</span><span class="v-fill"> </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"> </span><span class="v-label">JOD</span></div>
|
|
85
|
+
<div class="v-row"><span class="v-label">وذلك عن:</span><span class="v-fill"> </span></div>
|
|
86
|
+
</div>
|
|
87
|
+
<div class="col">
|
|
88
|
+
<div class="v-row"><span class="v-label">المرجع (عقد/خطاب):</span><span class="v-fill"> </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"> </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"> </span></div>
|
|
117
|
+
<div class="v-row v-amount"><span class="v-label">مبلغ وقدره:</span><span class="v-fill"> </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"> </span><span class="v-label">JOD</span></div>
|
|
121
|
+
<div class="v-row"><span class="v-label">وذلك عن:</span><span class="v-fill"> </span></div>
|
|
122
|
+
</div>
|
|
123
|
+
<div class="col">
|
|
124
|
+
<div class="v-row"><span class="v-label">المرجع (عقد/خطاب):</span><span class="v-fill"> </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"> </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"> </span></div>
|
|
153
|
+
<div class="v-row v-amount"><span class="v-label">مبلغ وقدره:</span><span class="v-fill"> </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"> </span><span class="v-label">JOD</span></div>
|
|
157
|
+
<div class="v-row"><span class="v-label">وذلك عن:</span><span class="v-fill"> </span></div>
|
|
158
|
+
</div>
|
|
159
|
+
<div class="col">
|
|
160
|
+
<div class="v-row"><span class="v-label">المرجع (عقد/خطاب):</span><span class="v-fill"> </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"> </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>
|
|
@@ -368,6 +368,58 @@ Client-facing content must protect clarity, scope, and trust.
|
|
|
368
368
|
|
|
369
369
|
---
|
|
370
370
|
|
|
371
|
+
## 9.6 ترميز الخطابات والوثائق الصادرة للزبون (SCP-2026-08-29-005)
|
|
372
|
+
|
|
373
|
+
```text
|
|
374
|
+
المبدأ: لا تُرسل أي مراسلة رسمية للزبون دون رقم رسمي فريد — الترميز موحّد
|
|
375
|
+
عبر كل المشاريع والمستودعات، وغير قابل للتكرار بين أي زبونين.
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
### الصيغة الرسمية
|
|
379
|
+
|
|
380
|
+
```text
|
|
381
|
+
{كود-العميل}-{نوع-الوثيقة}-{السنة}-{التسلسل}
|
|
382
|
+
مثال: NPB-LET-2026-004
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
| المكوّن | المصدر | القاعدة |
|
|
386
|
+
|---|---|---|
|
|
387
|
+
| **كود-العميل** (مثل NPB) | **Majed فقط** — عبر طلب يرفعه حارس من السجل المركزي `project-control/CLIENT_CODES.md` | يُخصص مرة واحدة ولا يُعاد استخدامه أبداً — يضمن الفريدية عبر المستودعات |
|
|
388
|
+
| **نوع-الوثيقة** | التصنيف الرسمي أدناه | ثابت — يُضاف نوع جديد بقرار Majed |
|
|
389
|
+
| **السنة** | سنة الإصدار | 4 أرقام |
|
|
390
|
+
| **التسلسل** | سجل خطابات العميل `client-approval/LETTER_LOG.md` | عداد تصاعدي لكل (نوع + سنة) داخل نفس العميل — يبدأ من 001 |
|
|
391
|
+
|
|
392
|
+
### أنواع الوثائق الرسمية (قابلة للزيادة)
|
|
393
|
+
|
|
394
|
+
| الرمز | النوع | أمثلة |
|
|
395
|
+
|:---:|---|---|
|
|
396
|
+
| **LET** | خطاب / مراسلة رسمية | عرض السعر، اعتماد النطاق، الاعتماد التجاري، إشعارات (ملكية سورس وغيرها) |
|
|
397
|
+
| **CON** | عقد / اتفاقية | اتفاقية خدمات برمجية، نطاق عمل (SOW)، ميثاق مشروع، NDA |
|
|
398
|
+
| **ADD** | ملحق تعاقدي | ملحق شراء سورس، ملحق ملكية/دفع |
|
|
399
|
+
| **PAL** | خطاب اعتماد بروتوتايب | اعتماد البروتوتايب |
|
|
400
|
+
| **DOC** | وثيقة معلومات | ملخص اجتماع/فهم، نطاق تفصيلي، ملخص تجاري |
|
|
401
|
+
| **TPL** | نموذج / استمارة | طلب تغيير، تقرير حالة |
|
|
402
|
+
|
|
403
|
+
> **إضافة نوع جديد:** بقرار Majed فقط (عبر حارس) — لا يضيفه عميل المنظومة من تلقاء نفسه.
|
|
404
|
+
|
|
405
|
+
### سجل خطابات العميل — `client-approval/LETTER_LOG.md` (إلزامي لكل عميل)
|
|
406
|
+
|
|
407
|
+
| العمود | المعنى |
|
|
408
|
+
|---|---|
|
|
409
|
+
| رقم الخطاب | `{كود}-{نوع}-{سنة}-{تسلسل}` |
|
|
410
|
+
| التاريخ | تاريخ الإصدار |
|
|
411
|
+
| النوع | من التصنيف الرسمي |
|
|
412
|
+
| المرجع/الملف | مسار/اسم ملف الخطاب |
|
|
413
|
+
| الحالة | أُرسل / بانتظار رد / معتمد / ملغي |
|
|
414
|
+
|
|
415
|
+
**قواعد:**
|
|
416
|
+
1. يُنشأ `LETTER_LOG.md` عند أول خطاب لكل عميل ويُحدَّث قبل إرسال أي خطاب.
|
|
417
|
+
2. التسلسل = آخر رقم من نفس (النوع + السنة) + 1.
|
|
418
|
+
3. أي خطاب بلا رقم رسمي = مخالفة — لا يُرسل.
|
|
419
|
+
4. كود العميل لا يُستنتج ولا يُخترع — يُؤخذ من Majed حصراً.
|
|
420
|
+
|
|
421
|
+
---
|
|
422
|
+
|
|
371
423
|
## 10. Relationship to Internal Tera Files
|
|
372
424
|
|
|
373
425
|
Client files are official relationship and approval records.
|
|
@@ -106,6 +106,8 @@ Project files record project-specific decisions.
|
|
|
106
106
|
| BTCA — Report Templates | `tera-system/consulting-helpers/BTCA_REPORT_TEMPLATES.md` | `.opencode/agents/tera-business-transformation-consultant.md` | قوالب التقارير العشرة الأساسية + التقرير التنفيذي. |
|
|
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
|
+
| 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. |
|
|
109
111
|
|
|
110
112
|
## 4. Duplication Policy
|
|
111
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,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tera-system/core",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "Tera System OpenCode Plugin
|
|
3
|
+
"version": "0.2.7",
|
|
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",
|
|
7
7
|
"engines": {
|