جاري الاتصال بقاعدة البيانات...

النظام العام

إدارة الخزانات والقناني

تسجيل الدخول

أدخل بياناتك للوصول إلى لوحة التحكم.

{{ loginError }}

تطوير MythX

{{ company.name }}

لوحة الإدارة

د.ح

OVERVIEW

نظرة عامة

تحليل سريع ومختصر لأداء النظام.

طن

المخزون السائل (كل الخزانات)

{{ totalGasInTons.toFixed(2) }}

د.ع

صافي التدفق النقدي (الكلي)

{{ money(netBalance) }}

ذمم

الديون المطلوبة من العملاء والزبائن

{{ money(receivablesTotal) }}

شحنات بانتظار مطابقة الفوارغ

{{ pendingDeliveriesCount }}

إجمالي العملاء

{{ clients.length }}

الحركات المسجلة

{{ transactions.length }}

آخر إغلاق شهري

{{ latestClose ? monthLabel(latestClose.key) : 'لا يوجد' }}

نافذة تسليم الرواتب

{{ currentPayPeriod.open ? 'مفتوحة — ' + monthLabel(currentPayPeriod.key) : 'مغلقة (27 ← 5)' }}

USERS

إدارة المستخدمين

الحسابات اللي تضيفها هنا حسابات كاشير — تدخل بوابة الموظف (cash.html) فقط، وما تكدر تدخل لوحة الإدارة. حساب الإدارة ما ينشأ من أي واجهة.
الاسم البريد الإلكتروني الصلاحية الحالة إجراءات
{{ user.name || '—' }} أنت {{ user.email }} {{ isAdminUser(user) ? 'إدارة' : 'كاشير' }} {{ user.disabled ? 'معطّل' : 'فعّال' }} —
لا يوجد مستخدمين مضافين.

EMPLOYEES

الموظفين

العقود والرواتب والحوافز والخصومات والغياب والسلف لكل موظف.

{{ contractsAlertCount }}

عدد الموظفين

{{ employees.length }}

د.ع

إجمالي الرواتب الاسمية

{{ totalBaseSalaries.toLocaleString('en-US') }}

حوافز الراتب القادم

{{ totalActiveBonuses.toLocaleString('en-US') }}

السلف المتبقية على الموظفين

{{ totalLoansRemaining.toLocaleString('en-US') }}

المصروف رواتب هذا الشهر

{{ paidThisMonth.toLocaleString('en-US') }}

الموظف الفئة الراتب الاسمي العقد موعد الراتب الراتب القادم إجراءات
{{ emp.name }} {{ emp.jobTitle || '—' }} · {{ emp.phone }}
{{ cat }}— سائق{{ emp.truckNo ? ' · ' + emp.truckNo : '' }}
{{ Number(emp.baseSalary || 0).toLocaleString('en-US') }}
يومية: {{ money(dayRate(emp)) }} · ساعة: {{ money(hourRate(emp)) }}
سقف السلفة: {{ money(emp.maxAdvance) }}
لغاية {{ emp.contract.endDate }}
{{ payEligibility(emp).ok ? 'مستحق — ' + monthLabel(payEligibility(emp).key) : (currentPayPeriod.open ? 'مسلَّم / غير مستحق' : 'النافذة 27 ← 5') }}
آخر تسليم: {{ formatDay(emp.lastPaidAt) }}
+{{ empPending(emp).bonus.toLocaleString('en-US') }} {{ empPending(emp).otHours }} س -{{ empPending(emp).deduction.toLocaleString('en-US') }} غياب {{ empPending(emp).absences }} إجازة {{ empPending(emp).leaves }} سلفة {{ empPending(emp).loan.toLocaleString('en-US') }}
الصافي المتوقع: {{ empPending(emp).net.toLocaleString('en-US') }}
لا يوجد موظفين مضافين بعد.

السلف

كل سلفة الها رقم وموظف، والقسط ينخصم تلقائياً ويا كل راتب وتكدر تزيده أو تنقصه وقت التسليم.

رقم السلفة الموظف التاريخ مبلغ السلفة المسدد المتبقي القسط مع كل راتب إجراءات
#{{ loan.no }} {{ employeeName(loan.employeeId) }}

{{ loan.note }}

{{ loan.date }} {{ Number(loan.amount || 0).toLocaleString('en-US') }} {{ (Number(loan.amount || 0) - Number(loan.remaining || 0)).toLocaleString('en-US') }} {{ Number(loan.remaining || 0).toLocaleString('en-US') }}
{{ Number(loan.installment || 0).toLocaleString('en-US') }}
ماكو سلف مسجلة.

مجموع المصروف

{{ money(payArchiveTotal) }} د.ع

الشهرالموظفتاريخ التسليمالراتبأوفر تايمالحوافزخصم وغيابالسلفالصافيالدفعالسند
{{ monthLabel(r.period) }}

{{ r.emp.name }}

{{ r.emp.jobTitle || empCatLabel(r.emp) }}

{{ r.rec.dateString }} {{ money(r.rec.base) }} {{ money(r.rec.overtimeAmount) }} {{ money(r.rec.bonusesTotal) }} {{ money(Number(r.rec.deductions || 0) + Number(r.rec.absenceAmount || 0)) }} {{ money(r.rec.loansTotal) }} {{ money(r.rec.total) }} {{ r.rec.paymentType }}
ماكو رواتب مؤرشفة{{ filters.payArchive.month ? ' لهذا الشهر' : '' }}.

اختصارات الحوافز حسب الفئة

هذي الحوافز تظهر جاهزة بضغطة وحدة عند إضافة حافز لأي موظف من نفس الفئة.

{{ group.category }}

{{ group.items.length }} حافز جاهز

{{ p.name }}

{{ p.details }}

{{ Number(p.amount || 0).toLocaleString('en-US') }}

ماكو حوافز جاهزة لهاي الفئة.

FINANCE

الإدارة المالية

الإيرادات النقدية والآجلة، الداخل والخارج، وصافي التدفق النقدي حسب الفترة (توقيت بغداد).

الإيرادات (مبيعات نقدية + آجلة)

{{ money(financeTotals.revenue) }} د.ع

منها آجل: {{ money(financeTotals.receivable) }}

النقد الداخل (مبيعات + تحصيل + تمويل)

{{ financeTotals.cashIn > 0 ? '+' : '' }}{{ money(financeTotals.cashIn) }}

منها تمويل: {{ money(financeTotals.funds) }}

النقد الخارج (صرفيات + مشتريات + رواتب)

{{ financeTotals.cashOut > 0 ? '-' : '' }}{{ money(financeTotals.cashOut) }}

مشتريات آجلة (ديون علينا): {{ money(financeTotals.payable) }}

صافي التدفق النقدي للفترة (الداخل − الخارج)

{{ money(financeTotals.net) }} د.ع

LOG & ARCHIVE

سجل الحركات والأرشيف المالي

واجهة واحدة لكل العمليات: التفاصيل الدقيقة، الكميات، المبالغ، ومن نفّذها.

التاريخ والوقت نوع الحركة التفاصيل والتغيير الحاصل الكمية المبلغ (د.ع) المستخدم إجراء
{{ tx.timestamp ? fmtDateTime(tx.timestamp) : tx.dateString }}

{{ tx.action }}

{{ catLabel(tx.category) }} ملغى
{{ tx.desc }}

{{ tx.ref }}

سبب الإلغاء: {{ tx.voidReason }} — {{ tx.voidedBy }}

{{ tx.qty || '—' }} {{ entryMoney(tx).sign }}{{ money(entryMoney(tx).amount) }} ---

{{ entryMoney(tx).note }}

{{ tx.byName || tx.by || '—' }}

{{ tx.source }}

لا توجد حركات مطابقة للبحث.

SUPPLIERS

إدارة الموردين

الرصيد = ما علينا للمورد (مشتريات آجلة − سندات الصرف).

اسم الجِهة / الشركةجِهات الاتصالالرقعة الجغرافيةالرصيد المطلوب (د.ع)المرفقاتإجراءات

{{ sup.companyName }}

{{ sup.email }}

ضريبي: {{ sup.taxNumber }}

{{ c.name }} {{ c.phone }}
{{ sup.area }} {{ money(sup.financialDebt) }} د.ع {{ sup.contracts.length }} لا يوجد
لا توجد نتائج مطابقة.

TANKS

الخزانات

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

{{ t.name }}

السعة الكلية {{ fmtQty(t.maxCapacity) }} طن

{{ getPercentage(t) }}%
غاز الميكس صنف مركب بدون خزان فيزيائي — هذا الخزان مخفي عن بوابة الموظف. انقل الكمية واحذفه.

آخر قراءة للضغط

{{ t.pressureReading || t.pressure || '—' }}

{{ fmtDateTime(t.pressureUpdatedAt) }}

المتبقي

{{ fmtQty(t.maxCapacity - t.currentAmount) }} طن

نوع الغاز

{{ gasLabel(t.gasTypeId, t.gasType) }}

درجة الغاز

{{ t.gasColorGrade || '—' }}

1007550250

المتوفر حالياً

{{ Number(t.currentAmount || 0).toFixed(2) }}

TON

لا توجد خزانات مضافة.

CYLINDERS

إدارة قناني الغاز

انقر على أي بطاقة لعرض سجل حركاتها (سحب، إدخال فارغ، شحن).

{{ cyl.name }}

{{ gasLabel(cyl.gasTypeId, cyl.gasType) }}مركب {{ cyl.volumeLiters }} لتر {{ cyl.capacityKg }} كغم

الضغط

{{ cyl.pressure || '—' }}

تكلفة القنينة المعيارية {{ money(Math.round(costOf(cyl.id).total)) }} د.ع
مادة خام مباشرة{{ costOf(cyl.id).composite ? ' (خليط)' : ' (هدر ' + costOf(cyl.id).venting + '%)' }}{{ money(Math.round(costOf(cyl.id).direct)) }}
تشغيلية (معامل الجهد){{ money(Math.round(costOf(cyl.id).opex)) }}
صافي الربح بسعر {{ money(costOf(cyl.id).sale) }}{{ money(Math.round(costOf(cyl.id).margin)) }}

مملوءة

{{ cyl.filledCount || 0 }}

فارغة

{{ cyl.emptyCount || 0 }}

بالعهدة

{{ custodyOfCyl(cyl.id) }}

تالف

{{ cyl.damagedCount || 0 }}

مسحوبة

{{ cyl.withdrawnCount || 0 }}

العدد الكلي للأصول {{ totalAssets(cyl) }}
لا توجد قناني مطابقة للبحث.

CLIENTS

العملاء وإدارة الديون

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

{{ client.name }}

{{ client.type }}

{{ client.area }} · {{ client.email }}

{{ c.name }} {{ c.phone }}

الدين المالي

{{ money(client.financialDebt) }} د.ع

القناني بذمته

{{ client.cylinderDebt || 0 }} قنينة

تفصيل ذمة القناني حسب النوع

{{ r.name }}: {{ r.count }} غير مصنف (رصيد قديم): {{ clientUnassigned(client) }} ماكو قناني بذمته.
لا توجد نتائج مطابقة للعملاء.

PRODUCTS

المنتجات

أصناف البيع المعتمدة في الوصل الذكي.

عدد الأصناف

{{ products.length }}

قيمة المخزون بالتكلفة

{{ productsStockCost.toLocaleString('en-US') }}

الربح المتوقع عند بيع الكل

{{ productsExpectedProfit.toLocaleString('en-US') }}

اسم المنتج الوحدة المورد التكلفة (د.ع) سعر البيع (د.ع) هامش الربح الكمية المتوفرة إجراءات
{{ prod.name }} {{ prod.unit || '—' }}
{{ prod.supplierName || '—' }} {{ prod.supplierPhone }}
{{ Number(prod.cost || 0).toLocaleString('en-US') }} {{ Number(prod.price || 0).toLocaleString('en-US') }} {{ (Number(prod.price || 0) - Number(prod.cost || 0)).toLocaleString('en-US') }} {{ Number(prod.qty || 0) }}
لا توجد منتجات مضافة بعد.

GAS & COST

إعدادات الغاز واحتساب التكلفة

التكلفة المباشرة (مادة خام) منفصلة تماماً عن المصاريف التشغيلية اللي تتوزع بمعامل الجهد.

أنواع الغاز ومعامل الجهد

نوع الغازالرمزسعر طن السائل (د.ع)نسبة الهدرمعامل الجهدالتركيبمستخدم فيإجراءات
{{ g.name }} {{ g.symbol || '—' }} {{ g.venting }}% × {{ g.effortFactor }} مركب: {{ i ? ' + ' : '' }}{{ gasName(c.gasTypeId) }} {{ Math.round(c.ratio) }}% غاز فيزيائي (له خزان) {{ gasUsage(g) }} خزان/قنينة
ماكو أنواع غاز مضافة.

أوزان الجهد المعتمدة: الأرجون 2.0 · الأوكسجين 1.0 · ثنائي أوكسيد الكاربون 1.2 · النيتروجين 1.0 · الغازات الخاصة 1.5. المعامل ما يضرب بسعر المادة الخام — يستخدم فقط لتوزيع المصاريف التشغيلية.

التكلفة المعيارية للقنينة

المادة الخام = (سعر الطن ÷ 1000) × وزن الغاز الصافي + نسبة الهدر · التشغيلية = حصة القنينة من المصاريف بمعامل الجهد

المصدر: {{ standardOpex.source === 'close' ? 'إغلاق ' + monthLabel(standardOpex.month) : standardOpex.source === 'initial' ? 'التهيئة الافتتاحية' : 'أرقام حية (' + monthLabel(standardOpex.month) + ') — لا يوجد إغلاق بعد' }}
القنينةالغازالوزن (كغم)مادة خام مباشرةتشغيليةالتكلفة الكليةسعر البيعصافي الربح
{{ r.cyl.name }} {{ r.gas ? r.gas.name : '—' }}مركب {{ r.kg }} {{ money(Math.round(r.direct)) }} {{ money(Math.round(r.opex)) }} {{ money(Math.round(r.total)) }} {{ r.sale ? money(r.sale) : '—' }} {{ r.margin === null ? '—' : money(Math.round(r.margin)) }}
ماكو قناني.

الإغلاق الشهري وتوزيع التكاليف

الوحدات المكافئة = عدد القناني المباعة × معامل الجهد. المصاريف ÷ مجموع الوحدات = تكلفة الوحدة، × معامل كل غاز = التشغيلية لكل قنينة. الإغلاق يقفل وصولات الشهر.

المصاريف المسجلة بالنظام لهذا الشهر (بدون المشتريات والسلف والتأمينات): {{ money(Math.round(opexForMonth(closeForm.key))) }} — تكدر تعدلها.

الغازالمباعالمعاملالوحدات المكافئةتشغيلية / قنينة
{{ r.name }}{{ r.count }}× {{ r.factor }}{{ Math.round(r.eu * 100) / 100 }}{{ money(Math.round(r.opexPerCyl)) }}
المجموع{{ Math.round(closePreview.totalEU * 100) / 100 }}وحدة = {{ money(Math.round(closePreview.unitCost)) }}

الأشهر المغلقة

{{ monthLabel(c.key) }} مصاريف {{ money(Math.round(c.opex)) }} · {{ c.closedBy }} مقفل مفتوح للتعديل

التهيئة الافتتاحية (البداية الباردة)

لمرة واحدة وللمدير المفوض فقط: أدخل مصاريف الشهر اللي قبل تشغيل النظام وعدد القناني المباعة لكل غاز، حتى تنحسب "تكلفة معيارية" يعتمد عليها الكاشير بالشهر الأول.

مقفلة نهائياً بعد أول إغلاق شهري فعلي — التكلفة المعيارية تتحدث الآن من البيانات الحية.

القيم الافتتاحية: مصاريف {{ money(settings.initialSetup.opex) }}

SETTINGS

إعدادات الشركة والتوقيت

هوية الشركة

د.ح

الاسم القانوني (الطرف الأول بالعقود — ثابت):

{{ company.legal }}

العنوان: {{ company.address }}

التوقيت ويوم العمل

المنطقة الزمنية للنظام: بغداد (Asia/Baghdad — UTC+3، بدون توقيت صيفي)

كل التواريخ والأيام (الضيعان اليومي، نافذة الرواتب 27←5، الإغلاق الشهري، الفلاتر) تنحسب بتوقيت بغداد مهما كان توقيت الجهاز. اليوم التقويمي يبدأ 00:00 وينتهي 23:59.

الوقت الحالي بالنظام: {{ fmtDateTime(nowTick) }}

تنضاف تلقائياً بكل راتب: (30 يوم − أيام الغياب والإجازة) × عدد الساعات، وتنحسب قيمتها بقيمة ساعة العمل الخاصة بكل موظف (الراتب ÷ 30 ÷ ساعات الدوام). اكتب 0 لإيقافها.

قائمة السواق لبوابة الموظف

تتحدث تلقائياً من الموظفين (فئة النقل أو المعلَّم كسائق) — بدون رواتب أو بيانات حساسة.

{{ d.name }}{{ d.truckNo || 'بدون رقم شاحنة' }}

ماكو سواق — أضف موظف بفئة النقل واللوجستيات.

نقل البيانات القديمة

إذا كنت تستخدم النظام قبل الربط، بياناتك (المنتجات، الزبائن، الموظفين، السلف، الوصولات، الضيعان) محفوظة بهذا المتصفح فقط. هذا الزر يرفعها لقاعدة البيانات مرة وحدة.

CUSTOMERS

الزبائن

الرصيد المطلوب = الرصيد الافتتاحي + المبيعات الآجلة − الدفعات المسددة.

عدد الزبائن

{{ customers.length }}

إجمالي الديون المطلوبة

{{ money(customersDebtTotal) }}

اسم الزبونالرصيد المطلوب / الديونجِهات الاتصالإجراءات
{{ cust.name }} {{ money(cust.financialDebt) }} د.ع
{{ c.name }} {{ c.phone }} لا يوجد
لا يوجد زبائن مضافين بعد.

{{ editingEmployeeId ? 'تعديل بيانات موظف' : 'إضافة موظف جديد' }}

الراتب الاسمي وساعات الدوام — قيمة ساعة الأوفر تنحسب تلقائياً من الراتب.

{{ money(hourRate(newEmployee)) }}
من يوم 27 لغاية 5 من الشهر الجديد

حوافز الموظف

{{ selectedEmployee?.name }} · {{ selectedEmployee?.category }}

ماكو اختصارات محفوظة لهاي الفئة بعد.

الحافز ينصرف ويا الراتب القادم فقط، وبعد التسليم ينشال تلقائياً.

حوافز الراتب القادم

{{ selectedEmployee ? employeeBonusTotal(selectedEmployee).toLocaleString('en-US') : 0 }} د.ع

{{ b.name }}

{{ b.details }}

{{ Number(b.amount || 0).toLocaleString('en-US') }}

ماكو حوافز مضافة لهذا الموظف.

{{ editingPresetId ? 'تعديل حافز جاهز' : 'حافز جاهز جديد' }}

يصير اختصار يظهر لكل موظفين الفئة.

تسليم راتب

{{ selectedEmployee?.name }} · {{ selectedEmployee?.jobTitle || empCatLabel(selectedEmployee) }}

{{ payrollElig.reason }}
{{ payrollElig.ok ? monthLabel(payrollElig.key) : '—' }}
{{ money(selectedEmployee?.baseSalary) }} د.ع

الأوفر تايم (قيمة الساعة {{ money(payrollHourRate) }})

+{{ money(payrollOvertime) }}

{{ payrollAutoOtHours }}
{{ payrollLoggedHours }}

التلقائي = (30 − أيام الغياب والإجازة) × {{ autoOtHoursPerDay }} ساعة يومياً.

الحوافز (شيل الصح عن أي حافز تأجله)

+{{ money(payrollBonusTotal) }}

ماكو حوافز لهذا الراتب.

الخصومات والغياب

-{{ money(payrollDeductionTotal + payrollAbsenceTotal) }}

عنده {{ payrollLeaves }} يوم إجازة مدفوعة من آخر راتب (ما تنخصم).

أقساط السلف (تكدر تزيد أو تنقص)

-{{ money(payrollLoanTotal) }}

سلفة #{{ l.no }}

المتبقي {{ money(l.remaining) }} · بعد الخصم {{ money(Math.max(0, l.remaining - clampLoan(l))) }}

الصافي المستحق للموظف {{ money(payrollNet) }} د.ع

سجل الرواتب

{{ selectedEmployee?.name }}

الشهرتاريخ التسليمالراتبأوفر تايمالحوافزخصم وغيابالسلفالصافيالسند
{{ monthLabel(recPeriod(rec)) }} {{ rec.dateString }} {{ money(rec.base) }} {{ money(rec.overtimeAmount) }} {{ money(rec.bonusesTotal) }} {{ money(Number(rec.deductions || 0) + Number(rec.absenceAmount || 0)) }} ({{ rec.absenceDays.length }} غياب) {{ money(rec.loansTotal) }} {{ money(rec.total) }}
ماكو رواتب مسجلة لهذا الموظف.

عقد العمل

{{ selectedEmployee?.name }} · {{ selectedEmployee ? contractStatus(selectedEmployee).label : '' }}

{{ contractData.adminOrderNo }}

الطرف الأول (يُكتب تلقائياً)

{{ contractData.firstParty }}

العنوان: {{ contractData.firstPartyAddress }}

بيانات الطرف الثاني (كلها إجبارية)

خصم على الموظف

{{ selectedEmployee?.name }} · ينخصم من الراتب القادم

خصومات الراتب القادم

{{ selectedEmployee ? sumAmounts(selectedEmployee.deductions).toLocaleString('en-US') : 0 }} د.ع

{{ d.name }}

{{ d.date }} · {{ d.details }}

-{{ Number(d.amount || 0).toLocaleString('en-US') }}

ماكو خصومات على هذا الموظف.

أوفر تايم

{{ selectedEmployee?.name }} · قيمة ساعة العمل {{ money(hourRate(selectedEmployee)) }} د.ع · إضافة لـ {{ autoOtHoursPerDay }} ساعة تلقائية يومياً

{{ money((Number(newOvertime.hours) || 0) * hourRate(selectedEmployee)) }}

ساعات الراتب القادم: {{ selectedEmployee ? empPending(selectedEmployee).otHours : 0 }} (منها تلقائي {{ selectedEmployee ? empPending(selectedEmployee).autoOt : 0 }})

{{ selectedEmployee ? empPending(selectedEmployee).otAmount.toLocaleString('en-US') : 0 }} د.ع

{{ o.hours }} ساعة

{{ o.date }} · {{ o.note }}

{{ money((Number(o.hours) || 0) * hourRate(selectedEmployee)) }}

ماكو ساعات أوفر مسجلة.

غياب / إجازة

{{ selectedEmployee?.name }} · أجر اليوم {{ selectedEmployee ? dayRate(selectedEmployee).toLocaleString('en-US') : 0 }} د.ع

{{ newAttendance.type === 'absence' ? 'راح ينخصم ' + (selectedEmployee ? dayRate(selectedEmployee).toLocaleString('en-US') : 0) + ' د.ع من الراتب القادم.' : 'الإجازة مدفوعة وما ينخصم منها شي.' }}

غياب غير مخصوم

{{ selectedEmployee ? empPending(selectedEmployee).absences : 0 }}

إجازات هذي السنة

{{ selectedEmployee ? leavesThisYear(selectedEmployee) : 0 }} / {{ selectedEmployee.contract.leaveDays }}

مبلغ الخصم

{{ selectedEmployee ? empPending(selectedEmployee).absenceAmount.toLocaleString('en-US') : 0 }}

السجل

{{ a.type === 'absence' ? 'غياب' : 'إجازة' }} {{ a.date }} {{ a.settled ? 'انخصم' : 'بانتظار الراتب' }}

{{ a.note }}

ماكو غيابات أو إجازات مسجلة.

{{ editingLoanId ? 'تعديل سلفة' : 'سلفة جديدة' }}

القسط ينخصم تلقائياً عند تسليم كل راتب.

{{ Number(newLoan.amount || 0).toLocaleString('en-US') }}

سقف السلفة الأعلى لهذا الموظف: {{ money(loanEmp.maxAdvance) }} د.ع

{{ loanBlock }}

تتسدد خلال {{ Math.ceil((editingLoanId ? Number(newLoan.remaining) : Number(newLoan.amount) || 0) / Number(newLoan.installment)) }} راتب تقريباً.

كشف السلفة #{{ selectedLoan.no }}

{{ employeeName(selectedLoan.employeeId) }} · {{ selectedLoan.date }}

المبلغ

{{ Number(selectedLoan.amount).toLocaleString('en-US') }}

المسدد

{{ (Number(selectedLoan.amount) - Number(selectedLoan.remaining)).toLocaleString('en-US') }}

المتبقي

{{ Number(selectedLoan.remaining).toLocaleString('en-US') }}

الأقساط المستقطعة

{{ r.dateString }} {{ r.source }} {{ Number(r.amount).toLocaleString('en-US') }}

ما انخصم أي قسط بعد.

{{ editingProductId ? 'تعديل منتج' : 'إضافة منتج جديد' }}

الأصناف هنا تظهر مباشرة في الوصل الذكي.

هامش الربح للوحدة الواحدة {{ productMargin.toLocaleString('en-US') }} د.ع

{{ editingCustomerId ? 'تعديل زبون' : 'إضافة زبون جديد' }}

الاسم وجِهات الاتصال{{ editingCustomerId ? '' : ' والرصيد الافتتاحي' }}.

أول رقم بالقائمة هو الرقم الذي يظهر تلقائياً في الوصل الذكي.

إضافة حساب كاشير

{{ userForm.error }}

{{ editingGasId ? 'تعديل نوع الغاز' : 'إضافة نوع غاز' }}

مكونات الخلطة (المجموع = 100%)

المجموع الحالي: {{ (newGas.components || []).reduce((s, c) => s + (Number(c.ratio) || 0), 0) }}%

يُستخدم إذا ماكو فاتورة إدخال غاز مسجلة ببوابة الموظف — آخر فاتورة تغلب عليه تلقائياً.

معامل الجهد يوزع المصاريف التشغيلية فقط (الأرجون 2.0 · الأوكسجين 1.0 · CO2 1.2 · النيتروجين 1.0 · الخاصة 1.5).

جاري تحميل البيانات...
جاري الحفظ...
{{ syncState.error }}

تسجيل صرفية جديدة

إدخال أموال للصندوق

{{ editingTankId ? 'تعديل بيانات الخزان' : 'إنشاء خزان جديد' }}

الغازات المركبة (مثل الميكس) ما تظهر هنا لأن ما عندها خزان فيزيائي.

ماكو أنواع غاز. ضيفها من .

إضافة كمية مباشرة

إلى الخزان: {{ selectedTank?.name }} · المتبقي للامتلاء {{ selectedTank ? fmtQty(selectedTank.maxCapacity - selectedTank.currentAmount) : 0 }} طن

طن

{{ editingCylinderId ? 'تعديل بيانات القناني' : 'إضافة نوع قناني جديد' }}

عداد "مسحوبة" ما يتغير تلقائياً — يبقى صفر إلا إذا عدلته يدوياً. القناني بعهدة العملاء تنحسب لوحدها من العهد. كل تعديل يدوي ينسجل بسجل الحركات.

{{ editingPersonId ? (isCreatingSupplier ? 'تعديل بيانات المورد' : 'تعديل بيانات العميل') : (isCreatingSupplier ? 'إضافة مورد جديد' : 'إضافة عميل جديد') }}

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

استرجاع فوارغ (فسخ عقد)

للعميل: {{ selectedClient?.name }} · بذمته {{ selectedClient ? clientCustodyTotal(selectedClient) : 0 }} قنينة

الاسترجاع الاعتيادي يكون من شاشة المطابقة ببوابة الموظف. هذا الإجراء للإدارة فقط عند فسخ العقد.

تصنيف الرصيد القديم

{{ classifyModal.client.name }} · غير مصنف {{ clientUnassigned(classifyModal.client) }} قنينة

وزّع الرصيد القديم على أنواع القناني حتى تنحسب بعهدة العميل وتقدر تسترجعها بالمطابقة. المجموع ما يتغير.

{{ c.name }}

تعبئة قناني

يُسحب آلياً: {{ i ? ' + ' : '' }}{{ p.gas }} {{ Math.round(p.ratio) }}% من {{ p.tank ? p.tank.name : '(ماكو خزان)' }}
{{ currentUser ? (currentUser.name || currentUser.email) : '' }}

الصافي بالقناني

{{ fmtQty(fillCalc.net) }} طن

التبخر

{{ fmtQty(fillCalc.loss) }} طن

المخصوم من الخزان

{{ fmtQty(fillCalc.total) }} طن

سجل حركات: {{ cylLedgerModal.cyl.name }}

مملوءة {{ cylLedgerModal.cyl.filledCount || 0 }} · فارغة {{ cylLedgerModal.cyl.emptyCount || 0 }} · بالعهدة {{ custodyOfCyl(cylLedgerModal.cyl.id) }} · تالف {{ cylLedgerModal.cyl.damagedCount || 0 }}

التاريخنوع الحركةالعددالتفاصيلبواسطة
{{ tx.timestamp ? fmtDateTime(tx.timestamp) : tx.date }} {{ tx.type }} {{ tx.count }} {{ tx.desc }} {{ tx.byName || tx.by || '—' }}
لا توجد حركات.

كشف حساب: {{ partyName(statementParty) }}

{{ partyTypeLabel(statementModal.type) }} · الرصيد الحالي {{ money(statementData.current) }} د.ع

التاريخالمستندالبيانمديندائنالرصيد
{{ r.date }}{{ r.no }} {{ r.label }}

{{ r.notes }}

{{ r.debit ? money(r.debit) : '' }}{{ r.credit ? money(r.credit) : '' }}{{ money(r.balance) }}

{{ voucherModal.type === 'supplier' ? (voucherModal.direction === 'pay' ? 'سند صرف لمورد' : 'سند قبض من مورد') : 'سند قبض' }}

{{ partyName(voucherParty) }} · {{ partyTypeLabel(voucherModal.type) }}

{{ voucherModal.type === 'supplier' ? 'الرصيد المطلوب للمورد' : 'إجمالي الديون المطلوبة من العميل' }} {{ money(voucherParty.financialDebt) }} د.ع

{{ tafqeetIQD(voucherModal.amount) }}

بروفايل العميل: {{ profileClient.name }}

الدين {{ money(profileClient.financialDebt) }} د.ع · بذمته {{ profileClient.cylinderDebt || 0 }} قنينة

{{ r.name }}: {{ r.count }} غير مصنف: {{ clientUnassigned(profileClient) }}
المستندالتاريخالفاتورةالسائقالخارجالراجعالحالة
{{ d.deliveryNo }} {{ fmtDateTime(d.timestamp) }} {{ d.invoiceNo }} {{ d.driverName }} · {{ d.truckNo }}
{{ it.name }}: {{ it.count }}
{{ it.name }}: {{ it.returned == null ? '—' : it.returned }}
{{ deliveryStatusLabel(d.status) }}

{{ fmtDateTime(d.closedAt) }}

استرجاع إداري{{ fmtDateTime(m.timestamp) }} {{ (cylinderTypes.find(c => c.id === m.cylId) || {}).name }}: {{ m.count }}{{ m.desc }}
ماكو مستندات تسليم لهذا العميل بعد.
التاريخالمستندالبيانمديندائنالرصيد
{{ r.date }}{{ r.no }} {{ r.label }}

{{ r.notes }}

{{ r.debit ? money(r.debit) : '' }}{{ r.credit ? money(r.credit) : '' }}{{ money(r.balance) }}

عكس القيد / إلغاء

{{ voidModal.entry.action }} · {{ voidModal.tx.invoiceNo || voidModal.tx.voucherNo }}

هذا القيد ضمن شهر مقفل — التعديل بصلاحية المدير المفوض ويُسجل بسجل الحركات.

الحذف النهائي ممنوع — القيد يبقى ظاهر بقيمة صفر وتنعكس آثاره (الديون، المخزون، الخزانات، العهدة).

{{ confirmBox.title }}

{{ confirmBox.message }}

{{ r[0] }}{{ r[1] }}

{{ confirmBox.note }}