شعار FlexiPeeHP" title="شعار المشروع" style="max-width: 100%;">
مكتبة مبنية على PHP لسهولة التفاعل مع نظام المحاسبة التشيكي FlexiBee.
CZ: مكتبة PHP لسهولة العمل مع النظام الاقتصادي التشيكي FlexiBee
❗ سيتم وضع علامة على هذه المكتبة على أنها قديمة. يرجى الانتباه إلى خليفته خفيفة الوزن https://github.com/Spoje-NET/php-flexibee ❗
لم يكن إنشاء هذه المكتبة ممكنًا لولا الدعم الكريم من Spoje.Net، التي دفعت تكاليف تطوير الحل لربط LMS / FlexiBee واستيراد المستودع. ؟
أود أيضًا أن أشكر الدعم الفني لشركة ABRA Flexi s.r.o على صبرهم في الرد على أسئلتي وتقارير الأخطاء التي ليست ذكية دائمًا.
تم تحسين تحليل النتائج لأغراض تسجيل القانون العام لحماية البيانات (GDPR) بدعم لطيف من <PureHTML>
composer require spoje.net/ FlexiPeeHP
إذا كان Composer.json الناتج سيبدو كما يلي:
{
"name" : " vendor/projectname " ,
"description" : " Test " ,
"type" : " project " ,
"require" : {
"spoje.net/ FlexiPeeHP " : " * "
},
"license" : " MIT " ,
"authors" : [
{
"name" : " Vítězslav Dvořák " ,
"email" : " [email protected] "
}
],
"minimum-stability" : " stable "
}
يبدأ أمر تثبيت الملحن عملية التثبيت:
يتم التكوين عن طريق تحديد الثوابت التالية:
/*
* URL Flexibee API
*/
define ( ' FLEXIBEE_URL ' , ' https://flexibee-dev.spoje.net:5434 ' );
/*
* Uživatel FlexiBee API
*/
define ( ' FLEXIBEE_LOGIN ' , ' apiuser ' );
/*
* Heslo FlexiBee API
*/
define ( ' FLEXIBEE_PASSWORD ' , ' apipass ' );
/*
* Společnost v FlexiBee
*/
define ( ' FLEXIBEE_COMPANY ' , ' test_s_r_o_ ' );
/*
* Nebo pokud nechceme používat jméno a heslo
*/
define ( ' FLEXIBEE_AUTHSESSID ' , ' 6QuifebMits ' ); //Volitelné
/*
* Pomalý server, velká databáze a přes modem k tomu
*/
define ( ' FLEXIBEE_TIMEOUT ' , 60 ); //Volitelné
أو يمكن توفير بيانات الاعتماد عند إنشاء مثيل للفصل.
$ invoicer = new FlexiPeeHP FakturaVydana ( null ,[
' company ' => ' Firma_s_r_o_ ' ,
' url ' => ' https://flexibee.firma.cz/ ' ,
' user ' => ' rest ' ,
' password ' => ' -dj3x21xaA_ '
]);
تتمتع طريقة الإعداد هذه بأولوية أعلى من الثوابت المحددة أعلاه.
$ order = new FlexiPeeHP ObjednavkaPrijata( ' code:OBP0034/2019 ' ,[ ' companyUrl ' => $ _GET [ ' companyUrl ' ], ' authSessionId ' => $ _GET [ ' authSessionId ' ] ])
بهذه الطريقة، يمكن لتطبيق يتم استدعاؤه بواسطة زر مستخدم يمرر قيم CompanyUrl و authSessionId الاتصال بالمرن والأمر الملموس
المكون المركزي للمكتبة بأكملها هو فئة FlexiBeeRO، القادرة على التواصل مع واجهة برمجة التطبيقات FlexiBee REST باستخدام ملحق curl PHP.
ويتم بعد ذلك اشتقاق فئات السجلات الفردية منه، والتي تحتوي على طرق للعمليات المستخدمة بشكل متكرر، على سبيل المثال "الدفع" في حالة الفواتير المستلمة.
يتم إنشاء فئة مشتقة جديدة بحيث يكون اسم الفئة هو اسم السجل، ولكن بدون واصلات. يتم استبدالها بحرف كبير في الاسم.
function evidenceToClass ( $ evidence )
{
return str_replace ( ' ' , '' , ucwords ( str_replace ( ' - ' , ' ' , $ evidence )));
}
إنه إذا أردنا استخلاص فئة جديدة لسجل "وحدات القياس"، فسوف يبدو الأمر كما يلي:
<?php
/**
* @link https://demo.flexibee.eu/c/demo/merna-jednotka/properties Vlastnosti evidence
*/
class MernaJednotka extends / FlexiPeeHP /FlexiBee
{
/**
* Evidence užitá objektem.
*
* @var string
*/
public $ evidence = ' merna-jednotka ' ;
}
وبعد ذلك يصبح من السهل كتابة وحدات القياس على سطرين:
$ jednotky = new MernaJednotka ();
print_r ( $ jednotky -> getAllFromFlexiBee () );
إذا أردنا أن تكون الفئة التي تم إنشاؤها حديثًا قادرة على الكتابة إلى النحلة المرنة، فيجب أن تكون مشتقة من السلف FlexiBeeRW.
يمكن العثور على المزيد من أمثلة الاستخدام في مشروع منفصل
في بعض الحالات، من الجيد معرفة الإجراءات التي يمكننا اتخاذها، أو ما هي بنية السجلات. يمكن الحصول على هذه المعلومات عن طريق الاتصال https://demo.flexibee.eu/c/demo/*/properties.json أو https://demo.flexibee.eu/c/demo/*/actions.json، ولكن هذا عملية تستغرق وقتا طويلا نسبيا. نظرًا لأن بنية السجلات والإجراءات أو العلاقات بين سجلات FlexiBee لا تتغير كثيرًا، FlexiPeeHP لديه آلية تسمح بالعمل مع هذه البيانات دون الحاجة إلى الاستعلام عن الخادم.
يتم تخزين البنية في فئة البنية (الإجراءات، العلاقات) التي تحتوي على حقل محدد بشكل ثابت يحتوي على معلومات كان من الممكن الحصول عليها من FlexiBee.
يمكن بعد ذلك عرض العنصر الموجود في قائمة الأدلة https://demo.flexibee.eu/c/demo/evidence-list بسهولة في أي وقت:
echo FlexiPeeHP Structure:: $ evidence [ ' faktura-vydana ' ];
يتم بعد ذلك تخزين هياكل السجلات الفردية في متغيرات ثابتة. يتبع أسمائهم نفس القواعد المتبعة لإنشاء اسم فئة جديد، باستثناء أن الحرف الأول صغير. إنه:
lcfirst ( FlexiPeeHP FlexiBeeRO:: evidenceToClassName ( $ evidence ))
إذا لزم الأمر، يمكن بعد ذلك إنشاء هذه الفئات بالمحتوى الحالي عن طريق الأمر التالي:
cd tools/
./update_all.sh
تستغرق العملية بضع دقائق. يمكننا عرض التقدم على النحو التالي:
tail -f /var/log/syslog | grep FlexiPeeHP test
إذا قمت بتعيين $this->debug على true في كائنات FlexiPeeHP ، فسيتم إجراء اختبارات إضافية قبل إرسال البيانات إلى FlexiBee. يتم التحقق من الأخطاء المحتملة التالية:
في وضع التصحيح، يتم أيضًا حفظ جميع طلبات flexibee واستجاباتها في المجلد /tmp
تتضمن المكتبة آلية لإرسال أخطاء وقت تشغيل FlexiBee للمطورين:
إذا قام FlexiBee بإرجاع خطأ خادم داخلي 500، فسيتم إرسال بريد إلكتروني يحتوي على رسالة الخطأ إلى المطورين.
إذا تم استخدام FlexiBee الذي يعمل على نفس الخادم وكان من الممكن قراءة سجلات الأخطاء، فسيتم استخراج جزء مناسب منها وإضافته إلى نص البريد.
يحتوي البريد الإلكتروني أيضًا على معلومات إضافية حول الترخيص والوحدات النمطية الممكّنة.
يتم أيضًا إرفاق ملفات تحتوي على نص الطلب المقدم إلى الخادم، ونص استجابته، وملف يحتوي على معلومات حول الضفيرة، كمرفقات أيضًا.
أثناء عمر الكائن، يتم تسجيل الأخطاء ويتم إرسال الأول فقط من كل نوع.
توجد اختبارات PHPUnit في مجلد الاختبار . إذا كنت تريد الاختبار على خادم آخر غير http://demo.flexibee.eu/ الرسمي، فستحتاج إلى تغيير الإعدادات في ملف bootstrap.php .
تحدد محتويات المتغير $testServer أي الإعدادات الافتراضية سيتم استخدامها. وبالطبع يمكنك تحديد ما يناسبك. على سبيل المثال، يظهر هنا خادم اختبار spoje.net.
للاختبار، يرجى أولاً إنشاء شركة اختبار TESTING s.r.o وتعيين بيانات الوصول للمستخدم المصرح له باستخدام REST API. (وهو المستخدم المسؤول الذي تم تحديده عند تثبيت FlexiBee.)
تحذير: قد يستغرق الاختبار مقابل شركة لديها الكثير من الفواتير وبنك متصل بعض الوقت، حيث يتم أيضًا اختبار استدعاء المطابقة التلقائية للمستندات.
إذا قررت وراثة FlexiPeeHP في مشروعك وكتابة اختبارات لهذه الفئات الموروثة أيضًا من FlexiPeeHP ، على سبيل المثال:
يمتد فئة HookRecieverTest Test FlexiPeeHP ChangesTest
أضف أيضًا المسارات إلى الاختبارات الأصلية إلى ملف Composer.json الخاص بك:
"autoload-dev": {
"psr-4": {
"Test\": "vendor/spoje.net/ FlexiPeeHP /testing/src/ FlexiPeeHP /testing/",
"Test\Ease\": "vendor/vitexsoftware/ease-framework/tests/src/Ease",
"Test\ FlexiPeeHP \": "vendor/spoje.net/ FlexiPeeHP /testing/src/ FlexiPeeHP /",
}
}
في مجلد الأمثلة، توجد أمثلة الاستخدام التالية:
ملف | وصف |
---|---|
المرفقاتSaveToFile.php | احفظ المرفق في ملف |
المرفقاتUpload.php | تحميل المرفق |
AuthSessionIdUsage.php | نموذج مصادقة AuthSessionId |
AuthenticateContact.php | مصادقة الاتصال |
BatchOperation.php | استخدام عامل التصفية في العمليات الدفعية |
CreateLabel.php | العمل مع التسميات |
DryRun.php | تخزين الاختبار (التشغيل الجاف) |
تنزيل الفاتورةPDF.php | تحميل الفاتورة بصيغة PDF |
Error404.php | العمل مع السجلات غير الموجودة |
FindOverdueInvoices.php | العثور على الفواتير المتأخرة |
GetRecordWithRelation.php | الحصول على سجل يتضمن بيانات الخصم من الباطن |
GetBankAccountForCompany.php | الحصول على حساب بنكي لشركة من الدليل |
InvoiceLockUnlock.php | قفل وفتح السجل |
نسخة الفاتورة.php | إنشاء مستند ضريبي من الدفعة المقدمة |
تسجيل الدخولتسجيل الخروج | تسجيل دخول المستخدم وتسجيل الخروج |
نجديدانوفيدوكلادKzalohovemu.php | تتبع الوثيقة |
التخزين.php | منتج مخزون بأرقام تسلسلية |
NewInvoice.php | فاتورة جديدة بتاريخ استحقاق مكتوبة بصيغة json |
ObjectChaining.php | تسلسل الكائنات لعمليات متعددة في قائمة الانتظار فقط |
ObjectCooperation.php | مشاركة البيانات ومعلمات الاتصال بين الكائنات |
أداء الإجراءات.php | كيفية تنفيذ الإجراءات على وثيقة العمل. على سبيل المثال إلغاء |
قراءة العنوانColumns.php | إرجاع أعمدة محددة |
sendInvoiceByMail.php | إرسال الفاتورة عن طريق البريد الإلكتروني |
SendReminders.php | إرسال التذكيرات |
SetContactAuth.php | إعدادات المصادقة |
TestConnection.php | فحص الاتصال |
docker pull vitexsoftware/ FlexiPeeHP
هناك حزم .deb متاحة لنظام التشغيل Linux. يرجى استخدام الريبو:
wget -O - http://v.s.cz/[email protected]|sudo apt-key add -
echo deb http://v.s.cz/ stable main > /etc/apt/sources.list.d/ease.list
aptitude update
aptitude install FlexiPeeHP
في هذه الحالة، تحتاج إلى إضافة ما يلي إلى ملف Composer.json الخاص بالتطبيق الخاص بك:
"require" : {
"spojenet_ FlexiPeeHP " : " * " ,
"vitexsoftware_ease-framework" : " * "
},
"repositories" : [
{
"type" : " path " ,
"url" : " /usr/share/php/ FlexiPeeHP " ,
"options" : {
"symlink" : true
}
},
{
"type" : " path " ,
"url" : " /usr/share/php/Ease " ,
"options" : {
"symlink" : true
}
}
]
لذلك عندما تقوم بتثبيت التبعيات، سيبدو الأمر كما يلي:
Loading composer repositories with package information
Installing dependencies from lock file
- Installing vitexsoftware_ease-framework (1.1.3.3)
Symlinked from /usr/share/php/Ease
- Installing spojenet_ FlexiPeeHP (0.2.1)
Symlinked from /usr/share/php/ FlexiPeeHP
وسيكون من الممكن التحديث عالميًا للنظام بأكمله عبر apt-get.
نقوم أيضًا بإنشاء حزمة FlexiPeeHP -doc ، التي تحتوي على وثائق المطورين التي تم إنشاؤها باستخدام برنامج ApiGen. الوثائق متاحة عبر الإنترنت على http://flexibee-dev.spoje.net/FlexiPeeHP/
الاختبار:
cd /usr/share/doc/ FlexiPeeHP /
composer install
php -f flexibeeping.php
نقوم بإنشاء حزمة دبيان عن طريق تشغيل make deb
صورة عامل الميناء:
docker build -t vitexsoftware/ FlexiPeeHP
إحصائيات العمل في مشروع WakaTime