
فاتورة النينجا الإصدار 5 هنا! لقد أخذنا أفضل أجزاء الإصدار 4 وأضفنا الميزات الأكثر طلبًا لإنشاء تطبيق فواتير لا مثيل له. تحقق من قناة Invoice Ninja على YouTube للتعرف على السرعة، أو جرّب العرض التجريبي الآن.
اختر الإعداد الخاص بك
يتم تضمين جميع ميزات Pro وEnterprise من التطبيق المستضاف في الكود المصدري المتاح. نحن نقدم ترخيصًا ذو علامة بيضاء بقيمة 30 دولارًا سنويًا لإزالة العلامة التجارية Invoice Ninja من الأجزاء التي يواجهها العميل في التطبيق.
ملاحظة: تدعم الخيارات المستضافة ذاتيًا تطبيقات سطح المكتب والجوال.
بالإضافة إلى Invoice Ninja - دليل التثبيت ذاتي الاستضافة الرسمي، لدينا بعض الأوامر لك.
git clone --single-branch --branch v5-stable https://github.com/invoiceninja/invoiceninja.git
cp .env.example .env
composer i -o --no-devيرجى ملاحظة: يتم استخدام APP_KEY الخاص بك في ملف .env لتشفير البيانات، إذا فقدت هذا فلن تتمكن من تشغيل التطبيق.
قم بتشغيل إذا كنت تريد تحميل بيانات نموذجية، تذكر تكوين .env
php artisan migrate:fresh --seed && php artisan db:seed && php artisan ninja:create-test-dataلتشغيل خادم الويب
php artisan serve انتقل إلى (استبدال المضيف المحلي بالمجال المناسب)
http://localhost:8000/setup - To setup your configuration if you did not load sample data.
http://localhost:8000/ - For Administrator Logon
user: [email protected]
pass: password
http://localhost:8000/client/login - For Client Portal
user: [email protected]
pass: password
بالإضافة إلى Invoice Ninja - دليل المطورين الرسمي، فإننا ندعمك ببعض الأفكار.
تم تطوير واجهة برمجة التطبيقات وبوابة العميل باستخدام Laravel. إذا كنت ترغب في المساهمة في هذا المشروع، فإن الإلمام بـ Laravel أمر ضروري.
عند فحص وظائف واجهة برمجة التطبيقات (API)، سيكون أفضل مكان للبدء هو ملف المسارات/api.php الذي يصف جميع نقاط نهاية واجهة برمجة التطبيقات المتاحة. تصف طرق التحكم بعد ذلك جميع نقاط الدخول في كل مجال من مجالات التطبيق، على سبيل المثال InvoiceController / QuoteController
يتبع طلب API المتوسط هذا المسار في التطبيق.
public function store ( StoreInvoiceRequest $ request )
{
$ invoice = $ this -> invoice_repo -> save ( $ request -> all (), InvoiceFactory:: create ( auth ()-> user ()-> company ()-> id , auth ()-> user ()-> id ));
$ invoice = $ invoice -> service ()
-> fillDefaults ()
-> triggeredActions ( $ request )
-> adjustInventory ()
-> save ();
event ( new InvoiceWasCreated ( $ invoice , $ invoice -> company , Ninja:: eventVars ( auth ()-> user () ? auth ()-> user ()-> id : null )));
return $ this -> itemResponse ( $ invoice );
}هنا على سبيل المثال، نقوم بتخزين فاتورة جديدة، ونمرر الطلب الذي تم التحقق من صحته مع المصنع إلى مستودع الفواتير حيث تتم معالجته وحفظه.
تمر الفاتورة المرتجعة بعد ذلك عبر فئة الخدمة الخاصة بها (التطبيق/الخدمات/الفاتورة) حيث يتم تنفيذ الإجراءات المختلفة.
يتم بعد ذلك إطلاق حدث لإعلام المستمعين في التطبيق (التطبيق/الموفرون/EventServiceProvider) الذين يقومون بمهام فرعية غير محظورة
أخيرًا، يتم تحويل الفاتورة (app/Transformers/) وإعادتها كرد عبر Fractal.
باستخدام إعداد الاستضافة السريعة الموصوف أعلاه، يمكنك البدء بسرعة في إنشاء بيئة التطوير الخاصة بك. بدلا من استخدام
composer i -o --no-dev
يستخدم
composer i -o
يوفر هذا أدوات المطور بما في ذلك phpunit الذي يسمح بتشغيل مجموعة الاختبار.
إذا كنت تفكر في المساهمة مرة أخرى في المستودع الرئيسي، فيرجى إضافة أي اختبارات للوظائف / التعديلات الجديدة. سيؤدي هذا إلى زيادة فرص قبول العلاقات العامة الخاصة بك بشكل كبير
أيضًا، إذا كنت تخطط لأي إضافات للمستودع الرئيسي، فقد ترغب في مناقشة ذلك معنا أولاً على Slack حيث يمكننا المساعدة في أي معلومات فنية وتقديم المشورة.
إذا وجدت مشكلة أمنية مع هذا التطبيق، يرجى إرسال بريد إلكتروني إلى [email protected]. يرجى اتباع إجراءات الكشف المسؤولة إذا اكتشفت مشكلة. لمزيد من المعلومات حول الإفصاح المسؤول، يرجى القراءة هنا.
يتم إصدار Invoice Ninja بموجب الترخيص المرن.
راجع الترخيص للحصول على التفاصيل.