تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] بخصوص تسليم درج الكاشير واليومية
#1
السلام عليكم
لدي مشروع فيجوال بيسك . نت

وقمت بإنشاء الملفات والاكواد الخاصة بتسليم الدرج
لم تحدث المشكلة ولكنه مجرد تفكير
اني قمت بعمل حقل اسمه 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)


الملفات المرفقة صورة/صور
   
الرد }}}
تم الشكر بواسطة:
#2
وعليكم السلام ورحمة الله وبركاته

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

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

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

مثلاً :
- وقت البدء كان     : 20221231080105      (بدأ في الثامنة صباحاً)
- وقت الاقفال كان  : 20221231130213      (أقفل ع الواحدة ظهراً)
في حال بحثت بين الرقمين السابقين  ستحصل على النتائج نفسها وبدقة عالية مهما اختلفت اعدادات الأجهزة.
قال صلى الله عليه وسلم: 
«كلمتان خفيفتان على اللسان 
ثقيلتان في الميزان،حبيبتان إلى الرحمن: 
سبحان الله وبحمده، سبحان الله العظيم».
الرد }}}
تم الشكر بواسطة:
#3
جزاك الله خير
لكن المشكلة في كود البحث بين تاريخ البداية كيف احدده
يعني كود الحبث من بداية التاريخ كيف يكون
مع العلم ان كود الترقيم لدي
يحوي السنة والشهر واليوم والساعة و الثانية
Dim orderDate As String = Now.ToString("yyyyMMddhs")
الرد }}}
تم الشكر بواسطة:
#4
(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")
قال صلى الله عليه وسلم: 
«كلمتان خفيفتان على اللسان 
ثقيلتان في الميزان،حبيبتان إلى الرحمن: 
سبحان الله وبحمده، سبحان الله العظيم».
الرد }}}
تم الشكر بواسطة:
#5
في هذه الحالة يفضل ان يكون عندك جدول اضافي اسمه على سبيل المثال Cashier_Tbl
هذا الجدول يتم انشاءه بالتزامن مع اضافة مستخدم جديد ونوعه كاشير يحتوي على
سبيل المثال الحقول التالية:
1.user_ID
2. Date_In وقت وتاريخ فتح الحساب
3.Date_out وقت وتاريخ اعلاق الحساب
3. CashBalance اجمالي المبيعات النقدية
4. netowrkBalance اجمالي مبيعات الشبكة
5.DebitTotal مجموع الديون المحصلة
6.Status حالة الكاشير
هذا على سبيل المثال طبعا"

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] بخصوص الفلترة كومبو بوكس في الفيجوال ستوديو؟ Mena Sabet 2 132 06-05-24, 02:22 AM
آخر رد: Mena Sabet
  سؤا بخصوص تجيمع كميات المواد المباعة في اليوم momani33 2 171 07-04-24, 11:02 PM
آخر رد: momani33
  [نقاش] بخصوص خصم مبلغ الضريبة من السعر h2551996 6 356 24-01-24, 06:17 PM
آخر رد: Taha Okla
  طلب مساعدة بخصوص كود الطباعة paveldida 2 525 19-01-24, 12:00 AM
آخر رد: العتيق
  [سؤال] كيفية ربط ماكينة الدفع ببرنامج الكاشير ؟ osamaelmaghraby 3 379 26-12-23, 11:53 PM
آخر رد: osamaelmaghraby
  مشكلة غربية عندما اقوم بالطباعة تطلع معي فاتورة الكاشير صغيرة جدا moh61 3 394 28-10-23, 06:57 PM
آخر رد: moh61
  استفسار عام بخصوص فتح اكثر من اتصال على قاعدة بيانات واحدة assuhimi 0 368 15-09-23, 04:54 PM
آخر رد: assuhimi
  كود فتح درج الكاشير بعد حفظ الفاتورة ؟ QWERTU 2 4,676 09-09-23, 03:19 AM
آخر رد: eljarushi
  سؤال بخصوص المخازن والكميات Owz 1 391 03-08-23, 03:32 PM
آخر رد: Taha Okla
  [سؤال] سؤال بخصوص برنامج يعمل بالباركود eslam kady 2 655 05-06-23, 11:26 PM
آخر رد: eslam kady

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم