أولاً، دعونا نلقي نظرة على الصورة الإجمالية من ماهية Oracle BRM الفواتير العملية
- يجمع المبلغ الإجمالي لتأثيرات الرصيد التي حدثت في الشهر الماضي. يمكن أن يشمل ذلك رسوم الاستخدام ورسوم الاشتراك.
- يقوم بتغيير حالة جميع عناصر الفاتورة المرتبطة بالفاتورة من معلقة إلى مفتوحة بحيث تتوقف عن تراكم الرسوم عليها، ويمكن تطبيق الدفعات عليها. بالإضافة إلى ذلك، يتم إضافة تاريخ استحقاق الدفع إلى الفاتورة.
- طلب المدفوعات تلقائياً من معالج بطاقة الائتمان أو طلب المدفوعات عن طريق إرسال الفواتير.
- تحديث رصيد حساب العميل تلقائيًا عند تسجيل عملية دفع في قاعدة بيانات BRM.
إذاً، كيف يتم كل ذلك عملياً؟
قبل تشغيل فوترة brm على الإنتاج، من الضروري أن يتم تنفيذ جميع الخطوات المطلوبة مسبقاً. تتمثل الخطوة الأولى في إعداد نسخة من بيئة الإنتاج - يمكن أن تكون إما بيئة ما قبل الإنتاج أو بيئة اختبار ما. تتضمن هذه الخطوة تثبيت أحدث إصدار للإنتاج على هذه البيئة ونسخ قاعدة بيانات الإنتاج. بعد ذلك، يجب أن تعكس تكوينات البيئة تلك الخاصة بالإنتاج. فيما يلي التكوينات الرئيسية التي يجب ضبطها بشكل مناسب:
- سم التكوين ($HOME/pin/sys/cm/pin.conf),
o تحقق من تعيين إدخال مستوى السجل على 1
o تغيير إدخال المعلمة agent_return إلى 0
o تغيير إدخال معلمة simulate_agent إلى 1
يتم إجراء هذين التغييرين الأخيرين بحيث لا يتضمنان أي إجراء للتزويد أثناء تشغيل الفاتورة.
- dm_oracle التكوين ($HOME/pin/sys/dm_oracle/pin.conf),
o تعيين معلمة dm_bigsize إلى 8388608 أو أعلى
o تعيين معلمة dm_shmsize إلى 33554432 أو أعلى
o تعيين dm_nfe إلى 8
o تعيين dm_max_per_fe إلى 16
o اضبط dm_n_be على 24
o تعيين dm_trans_be_max إلى 22
- دبوس_فواتير_المعاملات التكوين ($HOME/pin/apps/pin_billd/pin.conf),
o تحقق من مستوى السجل. قم بتغييره إلى القيمة المناسبة بناءً على ما يجب التحقق منه أثناء اختبار الفاتورة، إما 1 أو 3.
o تغيير معلمة الأطفال لـ pin_billd و pin_mta إلى 5
o تغيير المعلمة لكل_دفعة لـ pin_billd و pin_mta إلى 20000
o تغيير معلمة fetch_size لـ pin_billd و pin_mta إلى 150000
- دبوس_ينف_أكتس التكوين ($HOME/pin/apps/pin_inv/pin.conf),
o تحقق من مستوى السجل. قم بتغييره إلى القيمة المناسبة بناءً على ما يجب التحقق منه أثناء اختبار الفاتورة، إما 1 أو 3.
o تغيير معلمة الأطفال لـ pin_billd و pin_mta إلى 5
o تغيير المعلمة لكل_دفعة ل pin_billd و pin_mta إلى 2000
o تغيير المعلمة fetch_size لـ pin_billd و pin_mta إلى 15000
للحصول على أفضل محاكاة ممكنة للإنتاج، يجب تعيين وقت_التشغيل الافتراضي للفواتير على التاريخ الذي سيتم فيه تنفيذ التشغيل الحقيقي للفواتير على الإنتاج. بمجرد الانتهاء من ذلك، يمكن بدء تشغيل الفاتورة.
نقوم بتشغيل الفواتير شهريًا باستخدام البرنامج النصي pin_bill_day الذي ينشئ حوالي 100.000 فاتورة في الساعة. ينشئ البرنامج النصي فواتير للحسابات التي يكون تاريخ الفوترة فيها أي يوم قبل منتصف ليل اليوم الذي نقوم فيه بتشغيل الفواتير. إذن ما الذي يفعله النص البرمجي pin_billd_day في الواقع؟ يقوم بتشغيل أدوات الفوترة التالية:
- pin_deferred_act: تنفيذ الإجراءات المؤجلة؛ على سبيل المثال، إذا كان يجب أن يصبح الحساب غير نشط، تقوم هذه الأداة بتنفيذ تغيير الحالة في التاريخ المحدد.
- دبوس_فواتير_الحسابات: حساب الرصيد المستحق للحسابات وإنشاء فاتورة بالرصيد المستحق.
- Pin_collect: تحصيل الرصيد المستحق للحسابات التي تستخدم بطاقات الائتمان وتوجيه طرق الدفع بالخصم المباشر.
- Pin_refund: البحث عن الحسابات التي تحتوي على عناصر استرداد الأموال وإجراء معاملات استرداد الأموال عبر الإنترنت.
- pin_inv_accts: إنشاء فاتورة لكل حساب تتم فوترته.
- رسوم_دورة_الدورة: تطبيق أثر رصيد رسوم الدورة الآجلة على حساب العميل وإلغاء المنتجات التي لها تاريخ إلغاء معلق منتهي الصلاحية.
للتحقق من تقدم وأداء النص البرمجي pin_bill_day، نقوم بتشغيل استعلامات على قاعدة البيانات للحصول على معلومات حول عدد الفواتير التي تم إنجازها، وعدد الفواتير التي لم يتم إنجازها بعد، وما إذا كانت هناك أي فواتير بها أخطاء، وما إلى ذلك.
بعد انتهاء الجزء الخاص بالفوترة في brm وإنشاء جميع الفواتير، تبدأ الفواتير. بعد إنشاء الفواتير، يتم تصديرها إلى مستندات XML، والتي يتم تحويلها بعد ذلك إلى تنسيق PDF.
إلى جانب الاستعلامات المذكورة سابقًا، هناك أيضًا استعلامات أخرى يجب تنفيذها بمجرد الانتهاء من الفوترة وإعداد الفواتير، وذلك للتحقق من دقة البيانات الناتجة عن هذه العملية. نقوم بتنفيذ مجموعة من الاستعلامات؛ إليك بعضًا منها:
- هل فشلت الفوترة؟
اختر * من billinfo_t حيث bill_info_t حيث billing_state = 4 و bill_info_id'Bill Unit(1)';
-النتائج المتوقعة: لم يتم العثور على أي صفوف
- هل هناك أي حسابات غير مفوترة؟
حدد poid_id0، الاسم_الأول، الاسم_الأخير، الاسم_الأخير، الحالة من حساب_t_t a، حساب_اسم_اسم_المعلومات_t_nfo_t حيث
a.poid_id0=an.obj_id0 و
تم إنشاؤه_t< و
غير موجود (حدد b.account_obj_id0 من فاتورة_t_t b
حيث end_t= و
b.account_obj_obj_id0=a.poid_id0);
-النتائج المتوقعة: لم يتم العثور على أي صفوف
- هل هناك أي فواتير بدون رقم فاتورة؟
حدد * من فاتورة_t حيث end_t= و bill_no لاغية;
- متوقع: لم يتم العثور على أي صفوف
ثم يتم التحقيق في أي مشاكل يتم العثور عليها وإصلاحها من خلال نظام التحكم في الإصدار، حيث يتم تضمين الإصلاحات لاحقًا في إصدار الإصدار التالي.