feat(crm): add contracts, cost sheets, invoices modules and API clients

Made-with: Cursor
This commit is contained in:
Talal Sharabi
2026-03-11 16:40:25 +04:00
parent 8a20927044
commit 18c13cdf7c
12 changed files with 1483 additions and 10 deletions

View File

@@ -274,7 +274,49 @@ const translations = {
processing: 'Processing...',
deleting: 'Deleting...',
deleteDealConfirm: 'Are you sure you want to delete',
deleteDealDesc: 'This will mark the deal as lost'
deleteDealDesc: 'This will mark the deal as lost',
costSheets: 'Cost Sheets',
contracts: 'Contracts',
invoices: 'Invoices',
addCostSheet: 'Add Cost Sheet',
addContract: 'Add Contract',
addInvoice: 'Add Invoice',
approve: 'Approve',
reject: 'Reject',
markSigned: 'Mark Signed',
recordPayment: 'Record Payment',
costSheetApproved: 'Cost sheet approved',
costSheetRejected: 'Cost sheet rejected',
contractSigned: 'Contract signed',
paymentRecorded: 'Payment recorded',
costSheetCreated: 'Cost sheet created',
contractCreated: 'Contract created',
invoiceCreated: 'Invoice created',
costSheetItems: 'Cost items (description, source, cost, quantity)',
invoiceItems: 'Line items (description, quantity, unit price)',
description: 'Description',
source: 'Source',
addRow: 'Add row',
totalCost: 'Total Cost',
suggestedPrice: 'Suggested Price',
profitMargin: 'Profit Margin',
contractTitle: 'Contract Title',
contractType: 'Contract Type',
contractTypeSales: 'Sales',
contractTypeService: 'Service',
contractTypeMaintenance: 'Maintenance',
contractValue: 'Contract Value',
startDate: 'Start Date',
endDate: 'End Date',
paymentTerms: 'Payment Terms',
deliveryTerms: 'Delivery Terms',
terms: 'Terms & Conditions',
subtotal: 'Subtotal',
taxAmount: 'Tax Amount',
total: 'Total',
dueDate: 'Due Date',
paidAmount: 'Paid Amount',
paidDate: 'Paid Date'
},
import: {
title: 'Import Contacts',
@@ -508,7 +550,49 @@ const translations = {
processing: 'جاري المعالجة...',
deleting: 'جاري الحذف...',
deleteDealConfirm: 'هل أنت متأكد من حذف',
deleteDealDesc: 'سيتم تحديد الصفقة كخاسرة'
deleteDealDesc: 'سيتم تحديد الصفقة كخاسرة',
costSheets: 'كشوفات التكلفة',
contracts: 'العقود',
invoices: 'الفواتير',
addCostSheet: 'إضافة كشف تكلفة',
addContract: 'إضافة عقد',
addInvoice: 'إضافة فاتورة',
approve: 'موافقة',
reject: 'رفض',
markSigned: 'توقيع',
recordPayment: 'تسجيل الدفع',
costSheetApproved: 'تمت الموافقة على كشف التكلفة',
costSheetRejected: 'تم رفض كشف التكلفة',
contractSigned: 'تم توقيع العقد',
paymentRecorded: 'تم تسجيل الدفع',
costSheetCreated: 'تم إنشاء كشف التكلفة',
contractCreated: 'تم إنشاء العقد',
invoiceCreated: 'تم إنشاء الفاتورة',
costSheetItems: 'بنود التكلفة (الوصف، المصدر، التكلفة، الكمية)',
invoiceItems: 'بنود الفاتورة (الوصف، الكمية، سعر الوحدة)',
description: 'الوصف',
source: 'المصدر',
addRow: 'إضافة صف',
totalCost: 'إجمالي التكلفة',
suggestedPrice: 'السعر المقترح',
profitMargin: 'هامش الربح',
contractTitle: 'عنوان العقد',
contractType: 'نوع العقد',
contractTypeSales: 'مبيعات',
contractTypeService: 'خدمة',
contractTypeMaintenance: 'صيانة',
contractValue: 'قيمة العقد',
startDate: 'تاريخ البداية',
endDate: 'تاريخ النهاية',
paymentTerms: 'شروط الدفع',
deliveryTerms: 'شروط التسليم',
terms: 'الشروط والأحكام',
subtotal: 'المجموع الفرعي',
taxAmount: 'ضريبة',
total: 'الإجمالي',
dueDate: 'تاريخ الاستحقاق',
paidAmount: 'المبلغ المدفوع',
paidDate: 'تاريخ الدفع'
},
import: {
title: 'استيراد جهات الاتصال',