منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] بخصوص تسليم درج الكاشير واليومية - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [VB.NET] بخصوص تسليم درج الكاشير واليومية (/showthread.php?tid=44647)



بخصوص تسليم درج الكاشير واليومية - h2551996 - 31-12-22

السلام عليكم
لدي مشروع فيجوال بيسك . نت

وقمت بإنشاء الملفات والاكواد الخاصة بتسليم الدرج
لم تحدث المشكلة ولكنه مجرد تفكير
اني قمت بعمل حقل اسمه unpaidDaily
والحقل مهمته ان المدفوع داخل واجهة البيع يضيفه
وعليه يقرأ داخل زر مجموع المباع اليوم
لنفترض مثلا ان المبيعات بدأت الساعة 11 مساءا والوردية تنتهي في اليوم الثاني 8 صباحا مثلا
كيف اتحكم في بداية الوقت منذ ان قام الكاشير بفتح الدرج
يعني انا عند بداية فتح الفورم يظهر له قائمة انه يقوم بفتح ساعات العمل
كيف اتحكم في انه عند البداية الى النهاية يقرأ المبيعات ( بغض النظر عن اليوم )
هذا كود القراءة
كود :
Public Function Sum_Record_In_Cash1_Tbl_bydate(ByVal OrderDate As Date)
       con = New SqlConnection(cs)
       Dim Number As Double
       Try
           Dim cmd As New SqlCommand(" Select Sum(UnpaidDaily) From Sale_Tbl Where OrderDate = @OrderDate And Inv_Type=@Inv_Type", con)
           cmd.Parameters.Add("@OrderDate", SqlDbType.Date).Value = "#" & OrderDate & "#"
           cmd.Parameters.AddWithValue("@Inv_Type", "نقدي")
           If con.State = 1 Then con.Close()
           con.Open()
           Number = cmd.ExecuteScalar
           con.Close()
       Catch ex As Exception
           Number = 0.00
           con.Close()
       End Try
       Return Number
   End Function
كود :
LblCash1.Text = Sum_Record_In_Cash1_Tbl_bydate(Today_Date.Value)



RE: بخصوص تسليم درج الكاشير واليومية - Taha Okla - 31-12-22

وعليكم السلام ورحمة الله وبركاته

في هذه الحالة يجب أن يكون عندك جدول اضافي تحدد فيه الحقول التالية :
- اسم المستخدم.
- رقم او اسم الجهاز المفتوح عليه البرنامج.
- حالة الوردية :  (مفتوحة أم مغلقة).
- تاريخ ووقت فتح الوردية.
- تاريخ ووقت اغلاق الوردية.

البحث بيدأ وينتهي بين الوقتين (و بشرط : نفس اسم المستخدم والجهاز). وتأخذ منه النتيجة.

===================
من أجل عدم الوقوع بمشاكل تنسيق الوقت والتاريخ والاعدادات الاقليمية للأجهزة المختلفة :
شيئاً آخر مهم : 
- أن يكون لديك حقل في فواتير مبيعات المواد (وفي كل الجداول التي تؤثر عليها) يحفظ العملية بالتاريخ والوقت بتنسيق معين.
- أن تقرأ الوقت بنظام 24 ساعة.
- يجب أن تأخذ الوقت والتاريخ بشكل مجزأ من التاريخ ووقت النظام كي لا يتم حفظ التنسيق بشكل خاطئ فيهم الشهر كـ يوم أو العكس  في حال تغيرت اعدادات الجهاز مستقبلاً (يعني بتاخذ حذرك من الآن).
- أن تيم تحويل القيم اإلى نظان ثنائي الخانات الشهر (1) تصبح (01)  والساعة (9) تصبح (09)   وهكذا ، عدا السنة فهي رباعية.
- لنفترض أنك جلبت كل الأرقام وكانت كـ التالي :
  1. السنة (2022).
  2. الشهر (12).
  3. اليوم(31).
  4. الساعة(15).
  5. الدقيقة(5).  --  لأنها فردية الخانة تحول إلى  (05)
  6. الثانية(48).
--
ثم تقوم بإنشاء رقم من هذه السلسة السابقة من اليسار لليمين : الأكبر ثم الأصغر فالأصغر.
فيصبح الرقم : 20221231150548
هذا الرقم تخزنه في حقل تاريخ ووقت العملية ووقت الفتح ووقت الأقفال.. (إما تخزنه كـ صيغة نصية أو صيغة رقمية ليس مهماً هنا)  - لكن كـ ملاحظة الصيغة الرقمية أسرع للبحث في حال البيانات الكثيرة.

مثلاً :
- وقت البدء كان     : 20221231080105      (بدأ في الثامنة صباحاً)
- وقت الاقفال كان  : 20221231130213      (أقفل ع الواحدة ظهراً)
في حال بحثت بين الرقمين السابقين  ستحصل على النتائج نفسها وبدقة عالية مهما اختلفت اعدادات الأجهزة.


RE: بخصوص تسليم درج الكاشير واليومية - h2551996 - 01-01-23

جزاك الله خير
لكن المشكلة في كود البحث بين تاريخ البداية كيف احدده
يعني كود الحبث من بداية التاريخ كيف يكون
مع العلم ان كود الترقيم لدي
يحوي السنة والشهر واليوم والساعة و الثانية
Dim orderDate As String = Now.ToString("yyyyMMddhs")


RE: بخصوص تسليم درج الكاشير واليومية - Taha Okla - 01-01-23

(01-01-23, 12:03 PM)h2551996 كتب : جزاك الله خير
لكن المشكلة في كود البحث بين تاريخ البداية كيف احدده
يعني كود الحبث من بداية التاريخ كيف يكون
مع العلم ان كود الترقيم لدي
يحوي السنة والشهر واليوم والساعة و الثانية
Dim orderDate As String = Now.ToString("yyyyMMddhs")


عندما تفتح الوردية تسجل ذلك في  : 
جدول ورديات الصندوق(FundShifts) 
بأن اليوزر (xMan) 
افتتح الوردية بوقت وتاريخ (StartShifts)    =Now.ToString("yyyyMMddhhmmss")
وتسجل في حقل حالة الوردية (StatusShift) أن حالة  الوردية = 'Open'
أما حقل النهاية تضع فيه أي بيان (ليس مهماً في حالة أن حالة الوردية للمستخدم المذكور = مفتوح)
-------------------------------
عندما تريد أن تسلم الوردية تبحث في جدول (FundShifts) بشرط (User) و (StatusShift) أن الحالة مفتوحة 
لأنه ليس من المعقول أن تكون  أكثر من وردية للمستخدم الواحد في حالة فتح.
من خلال جملة الاستعلام:
كود :
"Select * From FundShifts Where User ='xMan' and StatusShift = 'Open'"

وتستخرج وقت وتاريخ البداية (الترقيم الزمني التسلسلي)  الذي هو  (StartShifts)
ومن خلال هذا الرقم تبدأ بالبحث في اليوميات أو المبيعات أو ما تسميه من جداول، عن الأموال بدلاله هذا التاريخ والتاريخ الحالي.

عندما تنتهي من عرض التقرير وطباعته -تعدل سجل الوردية المفتوحة- يعني: تعطي أمر اغلاق للوردية - فيذهب لجدول الورديات ويبدل (Open) بـ (Close) 
ووتضع في حقل نهاية الوردية بترقيم وقت وتاريخ اغلاق الوردية (EndShifts)    =Now.ToString("yyyyMMddhhmmss")


RE: بخصوص تسليم درج الكاشير واليومية - aljzazy - 01-01-23

في هذه الحالة يفضل ان يكون عندك جدول اضافي اسمه على سبيل المثال Cashier_Tbl
هذا الجدول يتم انشاءه بالتزامن مع اضافة مستخدم جديد ونوعه كاشير يحتوي على
سبيل المثال الحقول التالية:
1.user_ID
2. Date_In وقت وتاريخ فتح الحساب
3.Date_out وقت وتاريخ اعلاق الحساب
3. CashBalance اجمالي المبيعات النقدية
4. netowrkBalance اجمالي مبيعات الشبكة
5.DebitTotal مجموع الديون المحصلة
6.Status حالة الكاشير
هذا على سبيل المثال طبعا"

هذا الجدول يتم عمل تحيث له بعد كل عملية بيع او اي عملية فيها نقود
وتبقى حالة الكاشيرمفتوحة حتى يتم اغلاق حسابه
وبالتالي عند اغلاق الحساب تتحول حالته الى false ويتم تحديث وقت وتاريخ اعلاق الحساب
ومن هنا يمكنك ياستعلام بسيط جلب البيانات كاملة دون الحاجة الى وقت وتاريخ
طبعا" الكاشير لو حاول تسجيل الدخول مرة اخرى وحسابه غير مغلق سيتم تحديث بياناته الموجودة
اما بحالة تم اغلاق الحساب فسيتم تصفير جميع البيانات النقدية للكاشير


RE: بخصوص تسليم درج الكاشير واليومية - h2551996 - 02-01-23

مشكورين جميعا على الاهتمام والرد
ردود مجزية وطرق ناجحة بالطبع
لكن انا لا اريد اي اعمدة او اضافات جديدة
حتى يتم تنفيذ الكود بطريقة صحيحة
انا فقط احتاج وقت الكاشير جاء يسلم وردية
فقط اعرف المبلغ
حتى لا اريد حفظه لوقت لاحق
اريد كود مختصر فقط يحدد مثلا وليكن
عند فتح الوردية يقوم بحفظ التاريخ في اي مكان
وعند اغلاقها يتم جمع التاريخ المذكور مع نهاية التاريخ