18-03-21, 07:00 PM
السلام عليكم اعزائي اعضاء VB4ARB.
قمت ببناء منظومة بيع للمطاعم منذ فترة... وطباعة الفواتير في هذه الانظمة مهم جدا
في حالتي يقوم بالبرنامج بطباعة 4 انواع فواتير: فاتورة للمطبخ و 3 فواتير للزبون(فاتورة توصيل|فاتوؤة طاولة|فاتورة إستلام)
كل هدة الفواتير بنيت باستخدام crystal report و النظام يعمل بقواعد بيانات sqlserver و الـ stored procedure.
لكن اشعر ان الـ crystal report ثقيل قليلا و يكون تاخير في طباعة الفواتير قليلا (10-15 ثانية) مع العلم اني اقوم بالطباعة باستخدام
backgroundworker لاتمام عملية الطباعة ليكون الاستخدام اكثر سلاسة.
ايضا يمكن للمستخدم إرسال الطلب للمطبخ قبل انهاء اخذ كامل الطلب من الزبون و في هذة الحالة سيطبع فقط قاتورة واحدة وهي للمطبخ
و في الحالة الاخرى سيطبع فاتورتين واحدة للمطبخ ولاخرى للزبون.
وهذا هو الكود الخاص بالطباعة :
قمت ببناء منظومة بيع للمطاعم منذ فترة... وطباعة الفواتير في هذه الانظمة مهم جدا
في حالتي يقوم بالبرنامج بطباعة 4 انواع فواتير: فاتورة للمطبخ و 3 فواتير للزبون(فاتورة توصيل|فاتوؤة طاولة|فاتورة إستلام)
كل هدة الفواتير بنيت باستخدام crystal report و النظام يعمل بقواعد بيانات sqlserver و الـ stored procedure.
لكن اشعر ان الـ crystal report ثقيل قليلا و يكون تاخير في طباعة الفواتير قليلا (10-15 ثانية) مع العلم اني اقوم بالطباعة باستخدام
backgroundworker لاتمام عملية الطباعة ليكون الاستخدام اكثر سلاسة.
ايضا يمكن للمستخدم إرسال الطلب للمطبخ قبل انهاء اخذ كامل الطلب من الزبون و في هذة الحالة سيطبع فقط قاتورة واحدة وهي للمطبخ
و في الحالة الاخرى سيطبع فاتورتين واحدة للمطبخ ولاخرى للزبون.
وهذا هو الكود الخاص بالطباعة :
PHP كود :
public void Print_Bill(Int64 Invoice_ID, string _type)
{
if (Properties.Settings.Default.Bill_printer == "إختر طابعة الفواتير")
{
return;
}
ReportDocument Rtp = new ReportDocument();
if (_type == "طاولة")
{
Rtp = new Table_Bill();
}
else if (_type == "إستلام")
{
Rtp = new TakeAway_Bill();
}
else if (_type == "توصيل")
{
Rtp = new Delivery_Bill();
}
if (Rtp.DataDefinition.ParameterFields.Count > 0)
{
foreach (ParameterFieldDefinition crDef in Rtp.DataDefinition.ParameterFields)
{
if (crDef.ReportName == string.Empty)
{
object objValue = Invoice_ID;
Rtp.SetParameterValue(crDef.ParameterFieldName, objValue);
}
}
}
ConnectionInfo crConn = new ConnectionInfo
{
ServerName = Properties.Settings.Default.server,
DatabaseName = Properties.Settings.Default.database,
UserID = Properties.Settings.Default.user,
Password = Properties.Settings.Default.password
};
// get the Report Tables
using (Tables crTables = Rtp.Database.Tables)
{
// get the Report Tables
using (_ = Rtp.Database.Tables)
{
for (int i = 0; i < crTables.Count; i++)
{
using (Table crTable = crTables[i])
{
TableLogOnInfo tblInfo = crTable.LogOnInfo;
tblInfo.ConnectionInfo = crConn;
crTable.ApplyLogOnInfo(tblInfo);
}
}
CrystalDecisions.ReportAppServer.Controllers.PrintReportOptions popt = new CrystalDecisions.ReportAppServer.Controllers.PrintReportOptions
{
PrinterName = Properties.Settings.Default.Bill_printer
};
Rtp.ReportClientDocument.PrintOutputController.PrintReport(popt);
}
}
}
السوال هو: هل يوجد طريقة اسرع و اسلس من إستخدام crystal report ؟؟
هل طريقتي لاستخدام ال crystal report صحيحة ؟؟
هل طريقتي لاستخدام ال crystal report صحيحة ؟؟