> ## Documentation Index
> Fetch the complete documentation index at: https://help.kwentra.com/llms.txt
> Use this file to discover all available pages before exploring further.

# المخزون — تحويلات الوحدات

> سجّل العلاقة بين الوحدات مرة واحدة. بعدها اشترِ وحوِّل واصرف واطبخ بأي وحدة، ويبقى المخزون والتكلفة صحيحين بوحدة تخزين الصنف.

سجّل العلاقة بين الوحدات مرة واحدة، ثم اعمل بأي وحدة في المشتريات والمخزون والوصفات.

<video autoPlay muted playsInline controls className="w-full rounded-md" src="https://mintcdn.com/kwentra/AeZv-I0k7QlnE6TR/images/back-office/inventory/unit-conversions/unit-conversions-walkthrough.mp4?fit=max&auto=format&n=AeZv-I0k7QlnE6TR&q=85&s=d874c7eb5c0120291f44bfce7cf71c9a" data-path="images/back-office/inventory/unit-conversions/unit-conversions-walkthrough.mp4" />

### **القيمة العملية**

* يمنع أخطاء الألف ضعف في أرصدة المخزون والتكاليف والوصفات.
* يسجّل العلاقة بين الوحدات في شاشة واحدة، مع الإدخال والتصدير بالجملة.
* يسمح لكل فريق بالشراء والتحويل والصرف والطبخ بوحدته.
* يحفظ المخزون والتكلفة بوحدة تخزين الصنف.
* يفتح ويطبع كل مستند بالوحدة التي أدخلتها.
* يحمي وحدة الصنف بعد استخدامها.

### **حالات الاستخدام**

* مراقب التكاليف يعرّف kg → gm مرة واحدة، وكل الشاشات تستخدمه.
* مدير المشتريات يرفع طلباً بالجرام لصنف مخزَّن بالكيلوجرام.
* أمين المخزن يصرف 2000 gm بدون تحويل يدوي.
* الشيف يكتب 200 gm زبدة لصنف مخزَّن بالكيلوجرام، والتكلفة تظهر صحيحة.
* مشرف المخزون يجد وحدة صنف مستخدَم مقفلة، ويتجنب خطأً مكلفاً.

### **كيف يعمل**

| **Where:** Back Office → Settings → Inventory → Unit Conversions |
| - |

في السابق، لم يكن النظام يعرف أن 1 kg يساوي 1000 gm. الدقيق يصل في أكياس 50 kg ويُصرف بالجرام. كان أحد الموظفين يحوّله يدوياً، وخطأ واحد في الكتابة يجعل الرصيد والتكلفة خطأ.

كانت شاشة **Units** فيها حقلا **Amount** و**Other Unit**، لكن النظام لم يستخدمهما. شاشة Conversions حلّت محلهما.

تشرح هذه الصفحة شاشة التحويلات، والقواعد المشتركة، و[ما يختلف بين الشاشات](#ما-يختلف-بين-الشاشات).

| **ملاحظة:** وحدة تخزين الصنف اسمها **Store unit** في شاشة الصنف. بعض الشاشات تسمّيها "stock unit". هي وحدة واحدة باسمين. |
| - |

#### **شاشة التحويلات**

كل صف فيه **From Unit** و**To Unit** و**Factor**. مثلاً *kg → gm = 1000*، أو *lb → kg = 0.4536*.

* التحويل يسري على **كل صنف** يستخدم هاتين الوحدتين.
* اتجاه واحد يكفي للاتجاهين. عرّف *kg → gm* والنظام يعرف *gm → kg*.
* الشاشة تبدأ **فارغة**. أضف التحويلات التي تحتاجها، صفاً صفاً أو بالإدخال.
* **استخدم فلتر الوحدة** لتجدها في أي طرف. فلتر *kg* يعرض *kg → gm* و*lb → kg*.
* الصلاحيات هي نفس صلاحيات شاشة Units.

#### **كيف يُستخدم التحويل**

التحويل يعمل **فقط إذا وُجد صف لهذا الزوج بالتحديد**. **لا يوجد تسلسل**. وجود *kg → gm* و*gm → mg* لا يعطيك *kg → mg*. أضفه في صف مستقل.

كل قائمة وحدات تعرض فقط الوحدات التي لها صف يربطها بوحدة تخزين الصنف.

#### **تعديل التحويل**

* يمكنك تعديل **المعامل** فقط إذا لم تستخدمه أي معاملة.
* **وحدتا From وTo تُقفلان بعد استخدام التحويل**:
  * أي سطر مشتريات يستخدم إحدى الوحدتين لصنف مطابق. المستندات غير المعتمدة تُحسب أيضاً.
  * سطر مكوّن في وصفة يستخدم وحدة غير وحدة تخزين الصنف.
* لا يمكنك تغيير وحدات تحويل مستخدَم: *Cannot change units for a conversion already used in transactions.*
* يمكنك تغيير وحدات التحويل غير المستخدَم بحرية.
* كل تغيير يُحفظ في **سجل** التحويل.

#### **الإدخال والتصدير**

يمكنك **تصدير** التحويلات و**إدخالها** لتجهيزها بالجملة.

* إدخال زوج موجود **يحدّث معامله**.
* الإدخال لا يغيّر وحدات زوج موجود أبداً. نص المساعدة في الشاشة يوضح ذلك.
* الإدخال يطبّق نفس قواعد الشاشة، ومنها القفل بسبب الوصفات.

#### **وحدة واحدة على الصنف**

* **تم حذف Base unit من شاشة الصنف.** قائمة الأصناف تعرض **Store unit** بدلاً منه.
* إنشاء الصنف ونسخه يستخدمان Store unit فقط.
* يبقى Base unit في قاعدة البيانات بنفس قيمة Store unit. نقاط البيع لا تتأثر.

#### **وحدة التخزين محمية بعد استخدامها**

**لا يمكنك تغيير Store unit بعد ظهور الصنف في سطر معاملة.** الكميات تُحفظ كأرقام بلا وحدة. تغيير الوحدة لاحقاً يغيّر تاريخ الصنف كله. 500 جرام تصبح 500 kg.

* يصبح الحقل **للقراءة فقط مع توضيح السبب**.
* الصنف الذي ليس عليه معاملات يمكن تغيير وحدة تخزينه.

#### **رسائل التحقّق**

| الرسالة | متى تظهر |
| - | - |
| *Factor must be a positive number.* | المعامل صفر أو سالب. |
| *From Unit and To Unit must be different.* | الطرفان نفس الوحدة. |
| *This unit pair already has a conversion.* | الزوج — **أو عكسه** — موجود بالفعل. |
| *Cannot change units for a conversion already used in transactions.* | التحويل مستخدَم في سطر مستند. |
| *Unit does not exist in the system.* | عند الإدخال، لوحدة لم يتم إنشاؤها. |

| **ملاحظة:** المعامل واحد لكل الأصناف. لذلك تعمل تحويلات الوزن والحجم فقط. وحدات التعبئة لا تعمل: *1 case = 24* صحيحة للبيض وخطأ للمياه. يمكنك إضافة التحويلات وتعديلها، لكن لا يمكنك حذفها. |
| - |

### **القواعد التي تسري في كل الشاشات**

سطور المشتريات وتحويلات المخزون وصرف المخزون تعمل كلها بنفس الطريقة بعد اختيار الوحدة. سطور الوصفات تتبع أول ثلاث قواعد: اختيار الوحدة، وما أدخلته، والأرقام للقراءة فقط. النقاط الخاصة بشاشة واحدة موجودة في [ما يختلف بين الشاشات](#ما-يختلف-بين-الشاشات).

في السابق، كان النظام يتجاهل عمود **Unit**. كان رقمك يُقرأ بوحدة التخزين، وكذلك كل رقم للقراءة فقط. من يعمل بالجرام كان يرى *Available 4.536* وينقل ألف ضعف الكمية.

#### **الأمثلة الواردة أدناه**

كل الأمثلة من إعداد واحد. المعاملان المسجَّلان:

| From unit | To unit | Factor |
| - | - | - |
| kg | gm | 1000 |
| lb | kg | 0.4536 |

وحدة تخزين الصنف هي **kg**. في **Store A** يوجد **4.536 kg** بسعر **100.00** للكيلوجرام.

الصفّان في اتجاهين متعاكسين، وكلاهما يعمل. المعامل الواحد يكفي للاتجاهين.

#### **اختيار الوحدة**

اختر الصنف، وتُختار **وحدة تخزينه تلقائياً**.

* القائمة تعرض **kg وgm وlb**: وحدة التخزين وكل وحدة لها معامل معها.
* الصنف الذي **ليس له** تحويلات يعرض **وحدة تخزينه فقط**.
* التحويل المسجَّل بالاتجاه الآخر يُحسب. لكنه لا يمتد لأبعد من ذلك. لا يوجد تسلسل.
* وحدات التحويلات التي لا علاقة لها بالصنف لا تظهر.
* لا يمكنك اختيار وحدة ليس لها تحويل. إذا وصلت بالإدخال أو عن طريق API، يظهر خطأ في السطر.

#### **ما أدخلته لا يتغيّر أبداً**

تغيير الوحدة **يترك الكمية والسعر كما كتبتهما**. اكتب 2 ثم غيّر إلى gm، ويبقى السطر 2. معناه الآن 2 gm. لا تتغيّر Requested Qty ولا Approved Qty من تلقاء نفسها.

إجمالي السطر هو الكمية × السعر **كما يظهران**. مثلاً 3 oz بسعر 2.83495 إجماليها 8.50485.

#### **الأرقام للقراءة فقط تتبع الوحدة المختارة**

كل رقم **لا تكتبه** يتغيّر إلى الوحدة التي اخترتها. **عندما تزيد الكمية يقل السعر**، والعكس صحيح.

عند التغيير إلى **gm** (المسجَّل *kg → gm*):

| العمود | بالـ kg | بعد التغيير إلى gm |
| - | - | - |
| Available | 4.536 | **4536** |
| Price | 100.00 | **0.10** |
| Last received price | 100.00 | **0.10** |
| Requested Qty (المكتوب 2) | 2 | **2** — بدون تغيير |
| Value | 200.00 | **0.20** |

عند التغيير إلى **lb** (المسجَّل *lb → kg*، يُستخدم بالاتجاه الآخر):

| العمود | بالـ kg | بعد التغيير إلى lb |
| - | - | - |
| Available | 4.536 | **10** |
| Price | 100.00 | **45.36** |
| Last received price | 100.00 | **45.36** |
| Requested Qty (المكتوب 2) | 2 | **2** — بدون تغيير |
| Value | 200.00 | **90.72** |

الأرقام المحوَّلة تُقرَّب إلى **خمس خانات عشرية**. الأعمدة للقراءة فقط تختلف من شاشة لأخرى:

| الشاشة | الأرقام التي تتغيّر |
| - | - |
| **المشتريات** | الكمية المتاحة، وآخر كمية مستلَمة، وآخر سعر استلام، والحد الأدنى والأقصى |
| **تحويلات المخزون** | Available وPrice وLast received price وValue وRequested value |
| **صرف المخزون** | Available وValue وRequested value |
| **الوصفات** | Unit cost وValue وTotal cost وCost per portion وSuggested selling price |

#### **ما الذي يُحفظ ومتى يتم التحويل**

* **كل حفظ يحفظ السطر بوحدة تخزين الصنف**، حتى المسوّدة. اكتب 2000 gm ويُحفظ 2 kg. اكتب 2 lb ويُحفظ 0.9072 kg.
* في سطر المشتريات، 2 gm تُحفظ 0.002 kg، والسعر لكل وحدة تخزين.
* الاعتماد لا يحوّل شيئاً. هو ينقل أو يصرف أو يرحّل ما تم حفظه.
* **السطور تتحوّل قبل أي فحص على مستوى الصفوف.** 2000 gm مع 1 lb تُحسب 2.4536 kg، وليس 2001.
* تغيير الوحدة في السطر لا يغيّر شيئاً في المخزون.
* **سطور الوصفات مختلفة.** تُحفظ كما كتبتها. انظر [الوصفات وخصم نقاط البيع](#الوصفات-وخصم-نقاط-البيع).

#### **إعادة الفتح والتعديل والنسخ**

* المستند المحفوظ بوحدة التخزين يُفتح بدون تغيير.
* المستند المحفوظ بوحدة أخرى **يُفتح بهذه الوحدة**، وكل الأرقام تتغيّر معها.
  * محفوظ بـ gm: الوحدة **gm**، وRequested Qty **2000**، وAvailable **4536**، وPrice **0.10**.
  * محفوظ بـ lb: الوحدة **lb**، وRequested Qty **2**، وAvailable **10**، وPrice **45.36**.
* المستندات للقراءة فقط تعرض الأرقام بعد التحويل، وليس الأرقام المحفوظة.
* يمكنك تغيير الوحدة طالما المستند **مسوّدة**. بعد ذلك تُقفل.
* النسخ ينقل الوحدة والكمية **كما تظهران**. نسخ سطر 2000 gm يعطي 2000 gm، وليس 2.

#### **المطبوعات والتصدير والتقارير**

* المطبوعات تعرض الكمية والوحدة **كما اخترتهما في المستند**. مطبوعات المشتريات تعرض أيضاً سعر الوحدة كما اخترته.
* تصدير CSV في التحويلات والصرف يعرض الكمية وUnit وAvailable وValue كما اخترتها.
* كل سطر يحتفظ بالوحدة التي اخترتها. المستند يُفتح ويُطبع كما أدخلته.
* **التقارير لم تتغيّر.** تعرض دائماً وحدة التخزين وكمية المخزن. الإجماليات بين kg وgm وlb تبقى سهلة المقارنة.
* الحد الأدنى والأقصى للكمية يبقى بوحدة التخزين في كل مكان.

#### **المستندات المحفوظة قبل هذا التغيير**

كل ما تم حفظه قبل هذا التغيير، حتى المسوّدات، يُقرأ على أنه **بوحدة تخزين الصنف**. لا يتحوّل شيء، ولا يتغيّر أي رصيد، ولا يُمنع أي مستند.

| **ملاحظة:** يُحفظ فقط كمية وحدة التخزين والوحدة المختارة. الرقم يُحسب من جديد كل مرة تفتح المستند. التقريب إلى خمس خانات ليس دقيقاً دائماً. سطر مكتوب 7 oz قد يُفتح 7.00001 oz. |
| - |

### **ما يختلف بين الشاشات**

| **Where:** Back Office → Purchasing → Purchase Requests, Purchase Orders, Receiving Orders, Return Requests · Back Office → Inventory → Stock Transfers, Stock Usage, Recipes |
| - |

القواعد السابقة تسري على أنواع المستندات الستة. النقاط التالية تخص شاشة واحدة فقط.

#### **المشتريات**

تختار الوحدة مرة واحدة. المستندات التالية تنسخها:

* **Purchase Request** — تختار الوحدة في السطر.
* **Purchase Order** — ينسخ الوحدة والسعر من الطلب. الوحدة **للقراءة فقط**. الكمية المطلوبة تُقارن بالطلب المعتمد كرقم فقط. وحدة مختلفة كانت ستسمح بـ 3000 gm مقابل 2 kg معتمدة.
* **Receiving Order** — المرفوع من Purchase Order ينسخها بنفس الطريقة.
* **Return Request** — ينسخ وحدة الاستلام الذي يُرجع منه.

الطلب والترحيل:

* **الطلب الجزئي يترك الكمية الصحيحة.** طلب 2000 gm، تم طلب 1200 gm منه، يترك **800 gm** لم تُطلب بعد. تُحفظ بوحدة التخزين.
* **أمر الشراء الواحد يمكن أن يجمع وحدات مختلفة.** أمر شراء من عدة طلبات يحتفظ بكل سطر بوحدته.
* **الاستلام يرحّل الكمية بعد التحويل.** استلام 2000 gm من صنف بالكيلوجرام يضيف **2 kg**. المخزون يُقيَّم لكل وحدة تخزين. بسعر 0.10 للجرام، يبقى الرصيد **100.00 للكيلوجرام**.
* **Return Request يُرجع المخزون بنفس الطريقة.** إرجاع 1000 gm يخصم 1 kg.
* **اختيار الوحدة مرة أخرى في Receiving Order معتمد** يغيّر الأرقام للقراءة فقط. **لا** يرحّل المخزون مرتين.
* **أمر الاستلام المباشر ينشئ صرف مخزون**، بالوحدة والكمية من الاستلام.

| **ملاحظة:** **الموردون الذين يبيعون بالصندوق أو العبوة أو الكرتونة غير مدعومين.** *1 case = 24* صحيحة للبيض وخطأ للمياه. التعبئة جزء كبير من المشتريات. هذا هو القيد الرئيسي. تحويل الوحدات لا يسري على **Price Quotes**. |
| - |

#### **تحويلات المخزون وصرف المخزون**

اختر المخازن، ثم **Item**. يُملأ **Unit** بوحدة التخزين **kg**، ويعرض **Available** القيمة **4.536**. اعتماد التحويل ينقل الكمية المحفوظة بين المخازن. اعتماد الصرف يصرفها. هناك خمسة اختلافات:

* **من أين تأتي Available.** في التحويل، هي رصيد **From store**. في الصرف، هي رصيد **From store** في نفس الصف. الصرف يختار المخزن لكل سطر.
* **متى تُقفل الوحدة.** في التحويل، عند إرساله للاعتماد. في الصرف، بعد خروجه من المسوّدة. **لا يمكن** تعديلها أبداً في صرف أنشأه أمر استلام مباشر.
* **التعديل بعد الاعتماد.** صلاحية **Can edit approved Transfer** تسمح بتغيير Approve Qty في التحويل، **بوحدة السطر**. تغيير سطر معتمد من 2000 gm إلى 3000 ينقل **3 kg**، وليس 3000. تفتح Approve Qty فقط، ولا تفتح الوحدة. الصرف ليس له صلاحية مثلها.
* **الصرف الذي ينشئه النظام.** النظام يمكنه إنشاء صرف بدون نموذج. التحويلات ليس فيها شيء مثل هذا:
  * **أمر الاستلام المباشر** — يستخدم **الوحدة في سطر أمر الاستلام**. استلام 2000 gm ينشئ صرفاً يعرض 2000 gm. يُطبع بهذه الوحدة ويأخذ Value من الاستلام. الاثنان يُرحَّلان بوحدة التخزين. رصيد المخزن يرجع كما كان.
  * **تسوية المخزن** — تستخدم **وحدة تخزين الصنف**. التسوية تنشئ سطورها في الخلفية بدون نموذج.
  * **بيع طبق له وصفة في نقاط البيع** — يستخدم **الوحدة المكتوبة في الوصفة**. انظر [الوصفات وخصم نقاط البيع](#الوصفات-وخصم-نقاط-البيع).
  * **بيع صنف ليس له وصفة في نقاط البيع** — يستخدم **وحدة تخزين الصنف**. الفاتورة المدفوعة تنشئ صرفاً معتمداً يُرحَّل فوراً.
  * **مرتجع أو إلغاء في نقاط البيع** — صرف ثانٍ بكميات سالبة يُرجع المخزون. الصرفان يلغي أحدهما الآخر.
* **رسالة الرصيد غير الكافي.** في السابق لم تكن تذكر الوحدة. الشاشتان تذكرانها الآن، لكن بوحدتين مختلفتين:
  * **تحويلات المخزون** — *the Item X has only 4536 gm available. You cannot approve 6000 gm…*
  * **صرف المخزون** — *The total quantity for item X from store Y across all rows is 6 kg, but only 4.536 kg is available.*

#### **الوصفات وخصم نقاط البيع**

في السابق، كان النظام يتجاهل الوحدة في سطر المكوّن. لزبدة مخزَّنة بالكيلوجرام، كانت 200 gm تُقرأ 200 kg.

في شاشة الوصفة:

* **اسم العمود الآن Unit.** كان اسمه Store unit. يعرض الوحدة المكتوبة بها هذه الوصفة.
* **اختر الصنف، وتُختار وحدة تخزينه.** القائمة تتبع [اختيار الوحدة](#اختيار-الوحدة).
* **السطر يُحفظ كما كتبته.** احفظ 200 gm، ويُفتح **200** و**gm**، وليس 0.2 kg.
* **Unit cost يتغيّر إلى الوحدة المختارة.** 100.00 للكيلوجرام يظهر **0.10** للجرام.
* **Unit cost هو دائماً سعر المخزون الحالي للمكوّن.** عندما يتغيّر سعر المخزون، تعرض نفس الوصفة أرقاماً جديدة.
* أصناف Consumption وProfit Generating والأصناف غير المخزنية تعمل كلها بنفس الطريقة. المكوّن غير المخزني ليس له سعر. Unit cost وValue له يظهران **0**.

مثال: وصفة **Béarnaise** تكفي **4** حصص، ومعامل الربح **3**. فيها سطر واحد: **200 gm** زبدة (Butter). الزبدة مخزَّنة بـ **kg** بسعر **100.00** للكيلوجرام.

| الرقم | يظهر |
| - | - |
| Unit cost | **0.10** — 100.00 للكيلوجرام، معروض للجرام |
| Value | **20.00** — 200 × 0.10 |
| Total cost | **20.00** |
| Cost per portion | **5.00** — 20.00 ÷ 4 حصص |
| Suggested selling price | **15.00** — 5.00 × معامل الربح 3 |

غيّر السطر إلى kg مرة أخرى، ويظهر Unit cost بقيمة 100.00. رقم 200 الذي كتبته لا يتغيّر.

عند بيع طبق في نقاط البيع:

* **كل مكوّن يتحوّل إلى وحدة التخزين أولاً، ثم يُقسم على عدد الحصص.**
* 200 gm تساوي 0.2 kg. على 4 حصص، طبق Béarnaise الواحد يستخدم **0.05 kg** زبدة.
* **الصرف يعرض وحدة الوصفة.** يعرض **50 gm** زبدة ويرحّل **0.05 kg**.
* **قد تتوقف وحدة السطر عن التحويل إلى وحدة تخزين الصنف.** عندها يستخدم الصرف **وحدة التخزين الحالية** للصنف. هذا يحدث إذا تغيّرت وحدة التخزين بعد كتابة الوصفة.

قواعد أخرى للوصفات:

* **لا يمكن أن يتكرر نفس الصنف في الوصفة لنفس المخزن.** 200 gm زبدة و1 kg زبدة في وصفة واحدة لا يمكن حفظهما.
* الوصفات التي فيها صنف مكرر لا يمكن حفظها مرة أخرى. فحص لمرة واحدة يعرض قائمة بها.
* **إدخال الوصفات** يفحص الوحدة في كل صف مكوّن. يجب أن تكون وحدة التخزين، أو وحدة لها تحويل مباشر معها.
* صف الإدخال بأي وحدة أخرى يظهر له خطأ يذكر رقم الصف. الإدخال يمنع أيضاً تكرار الصنف لنفس المخزن.
* الإدخال يمكنه إنشاء وصفة أو تحديثها بوحدة التخزين أو بوحدة تحويل.
* سطر وصفة بوحدة غير وحدة التخزين **يقفل هذا التحويل**. انظر [تعديل التحويل](#تعديل-التحويل).

| **ملاحظة:** سطور الوصفات القديمة كانت دائماً بوحدة تخزين الصنف. الآن تم ضبط Unit فيها على وحدة التخزين. **لا تتغيّر أي كمية أو تكلفة أو رصيد.** |
| - |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.