تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
خصم الكميات الموجوده باكتر من تاريخ
#1
السلام عليكم فى مشكله عندى وهى المخزن موجود فيه كميات بتواريخ مختلفه بيتم اظهارها اثناء البيع مينفعش يبيع اكتر من الاجمالى 
بس مع التخزين كنت بستخدم كود بيخصم من جدول فيه الاجمالى بس 
مع تغيير الجدول لجدول المخزن ظهرت المشكله 
كود :
           For Each r As DataGridViewRow In dgvprodac.Rows
               Dim ad As Integer = Val(r.Cells(0).Value)
               Dim txP As String = Val(r.Cells(1).Value)
               Dim xt As Single = Val(r.Cells(2).Value)
               Dim txC As Integer = Val(r.Cells(3).Value)
               cmd.CommandText = String.Format(" UPDATE [store] SET [sanf_kem] = sanf_kem -{0}  WHERE [ID_sanf] = {1} ", xt, ad)
               cmd.ExecuteNonQuery()
           Next

ده الكود مع تعديل الجدول الى فيه date_ex كخلية تاريخ الانتهاء طبعا سلب معايا
المشكله الصنف 1 مثلا موجود منه 4 بتاريخ و6 بتاريخ تانى فى حالة انه باع العشره مثلا الكود بقى يبقى اذاى انه يقلل ويحذف كمان فى حالة ان الكميه بقت صفر ويدخل على الكميه الى موجوده فى التاريخ التانى ولو بقى صفر يحذفه


الملفات المرفقة صورة/صور
   
الرد
تم الشكر بواسطة:
#2
يا جدعان انا فى مشكله ذقوا معانا الكود شويه
الرد
تم الشكر بواسطة:
#3
أخى نبيل
الفروض و المنطقى أن الجدول يكون به صنف كود 1 و كمية 10 ... لما يتم التعامل على الصنف :
فى حالة الخصم منه :
1- تظهر الكمية المنصرفة بجدول صادر مخزن
2- تظهر كمية المخزن فى جدول رصيد المخزن بالكمية المتبقية
3- فى جدول وارد المخزن الكمية كما هى لا تتأثر سوى بالوارد أى بالزيادة فقط
...........................................
بخلاف ما سبق لا أعلم ما هى المشكلة لديك .. تواصل معنا ووضح المشكلة أكثر
الرد
تم الشكر بواسطة: NABILWARSAW , asemshahen5
#4
السلام عليكم ورحمة الله وبركاته
اخي الكريم بالنسبة لصلاحيات المنتجات
من المفروض عند البيع عرض كمية المنتجات المتوفرة في المخزن فقط بدون تاريخ صلاحياتها اذ ليس من المعقول ان ابيع كمية 20 قطعة من منتج له صلاحية بقي منه 7 قطع ثم اخذ 13 قطعة من نفس المنتج من صلاحية اخرى لتتم عملية استكمال المطلوب للبيع (شاهدت احد الفيديوهات يظهر الصلاحيات اثناء البيع لكن لم يخطر في بالي وفتها هذه المشكلة) فمن غير المعقول البحث في الصلاحيات اثناء البيع 
اما صلاحيات المنتجات فيجب ان يكون لها فورم خاصة مهمتها تصفية المنتجات المنتهية الصلاحية او التي تم بيعها بالكامل او التي تتلف
(البعض يجعل للاتلاف فورم خاصة)
وفي العادة يتم تسليم المنتجات الاقدم الى العملاء تفاديا لتراكمها وانتهاء صلاحياتها
كل ماسبق عبارة عن الافكار الرئيسة في حل هذا المشكل والحلول كثيرة ومختلفة حسب مايبرمجه كل على طريقته
قمت بعمل مثال فيه فورم واحدة تعرض كل المنتجات النشطة والغير منتهية الصلاحية وفيها مربع نص  يستقبل عدد مبيعات منتج ما وعند جلب المنتج باسمه ( المفروض ان يكون له استعلام خاص بجلب كمية المباع) 
تتم عملية الخصم من مجمل الكميات ويتم اغلاق الكميات التي بيعت من من هذا المنتج بحيث لن تظهر مرة اخرى وذلك عن طريق جعل حالة هذا المنتج (false) 
كما يمكننا عرض المنتجات التي ستنتهي صلاحياتها خلال اسبوع ابتداء من اليوم الحالي 
وايضا جعل حالة اي منتج غير نشط  وكذلك عمليات البحث حسب التاريخ  وغيرها 
طبعا المثال عملته قبل ساعة من الان بالرغم من عدم وجود فكرة سابقة عن الموضوع(ربما يطوره احد ما للافضل)
قد برى البعض فيه افكار جيدة واخرون  افكار غير عملية  
اتنمى ابداء الرأي من الجميع فأراؤكم مهمة تساعدني على التطور نحو الافضل
ان اصبت فمن توفيق الله لي  وان اخطأت فهو مني
ملاحظة تعديل بسيط على هذا الكود :
كود :
   ' الحساب والحفظ الاتوماتيكي
   Private Sub Btn_CalcAndSave_Click(sender As Object, e As EventArgs) Handles Btn_CalcAndSave.Click
       Dim Total As Integer = Val(Txt_Total_Buy.Text)
       For k As Integer = 0 To dgv_table.Rows.Count - 1

           Dim MyArr(dgv_table.Rows.Count - 1) As Integer
           For i As Integer = 0 To dgv_table.Rows.Count - 1
               MyArr(i) = dgv_table.Rows(i).Cells("item_Qty").Value
           Next
           If Total >= MyArr(0) Then
               Total = Total - MyArr(0)
               ' حفظ التعدبلات على اول سجل يظهر
               Update_ItemExp(dgv_table.Rows(0).Cells("Item_Code").Value,
                                        dgv_table.Rows(0).Cells("Item_Name").Value,
                                        dgv_table.Rows(0).Cells("Item_Experiance").Value,
                                        0,
                                        False,
                                        dgv_table.Rows(0).Cells("Exp_ID").Value)
               ' اعادة التحميل
               selectItem()
           Else
               Exit Sub
           End If
       Next
       MessageBox.Show("تم حساب المنتجات المباعة بالكامل والحفظ بنجاح", "حساب", MessageBoxButtons.OK, MessageBoxIcon.Information)
       Btn_CalcAndSave.Enabled = False
       Txt_Searsh.Text = Nothing
   End Sub


الملفات المرفقة
.zip   ExperItem.zip (الحجم : 133.15 ك ب / التحميلات : 37)
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
تم الشكر بواسطة: NABILWARSAW , WaeLx , WaeLx , asemshahen5
#5
شكرا اخى ياسر و اخى ابراهيم
نقطة اننا نبحث عن اقرب تاريخ لوحدها نصف الحل
نستعلم عن اقرب تاريخ وعدد الكميه الموجوده اذا كانت الكميه اكبر من كمية البيع يعمل ابديت ويقلل الكميه على طول لو تساوى كمية البيع يحذها لو اقل نحط الكميه فى متغير ونقللها من كمية البيع ومن ثم اعادة العمليه مع العلم ان عمر ميكون كمية البيع اكبر من الاجمالى
مطلوب كود البحث عن اقرب تاريخ الصيغه بتكون اذاى بس
الرد
تم الشكر بواسطة: ابراهيم ايبو , asemshahen5
#6
السلام عليكم اخي نبيل
كما ذكرت لك البائع ليس بحاجة الى معرفة صلاحيات المنتج اثناء عملية البيع 
هو فقط يتأكد من الكمية المتاحة ويسلم البضاعة للعميل حسب التاريخ الاقدم 
فقط في نهاية اليوم يقوم بفتح شاشة انتهاء الاصناف او شاشة صلاحيات المنتج سمها ماشئت
ويقارن الكميات التي تم بيعها ويتم ترصيد الصنف الاقدم في حال كانت الكمية اكير منه
ويمكنه معرفة الصلاحيات من خلال البحث بالتاريخ ويحتاط للمنتج بهذه الطريقة
اتمنى ان تكون الامور واضحة لك
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
تم الشكر بواسطة: DR.YASER , asemshahen5
#7
(19-07-20, 09:18 PM)ابراهيم ايبو كتب : السلام عليكم اخي نبيل
كما ذكرت لك البائع ليس بحاجة الى معرفة صلاحيات المنتج اثناء عملية البيع 
هو فقط يتأكد من الكمية المتاحة ويسلم البضاعة للعميل حسب التاريخ الاقدم 
فقط في نهاية اليوم يقوم بفتح شاشة انتهاء الاصناف او شاشة صلاحيات المنتج سمها ماشئت
ويقارن الكميات التي تم بيعها ويتم ترصيد الصنف الاقدم في حال كانت الكمية اكير منه
ويمكنه معرفة الصلاحيات من خلال البحث بالتاريخ ويحتاط للمنتج بهذه الطريقة
اتمنى ان تكون الامور واضحة لك

فعلا أخى ابراهيم .. هذا هو بيت القصيد .. أما بالنسبة للصلاحية و البيع للأقدم توريدا للمخزن أو الأقرب انتهاء صلاحية أ, المفاضلة بين البيع للمورد بسعر أعلى أم أقل فلها ثلاث طرق : فيفو   و   ليفو  و المتوسط المرجح
الرد
تم الشكر بواسطة: asemshahen5
#8
الكود ده ممكن يساعدنى مع احترامى الكامل لارائكم 

بس غلط ممكن تعديله
كود :
     sqlstr = "Select min(date_ex),sanf_kem from store where ID_sanf =@pass"


           cmd = New OleDbCommand(sqlstr, con)
           cmd.Parameters.Add(New OleDbParameter("@pass", ad))
           con.Open()
           Dim dr As OleDb.OleDbDataReader = cmd.ExecuteScalar()
           If dr.Read() Then
               DateTimePicker1.Value = dr.Item(0)
               TextBox5.Text = dr.Item(1)
           End If
الرد
تم الشكر بواسطة: asemshahen5
#9
السلام عليكم اخي الكريم
هذا فنكشن لجلب اصغر قيمة من عمود معين لجدول
كود :
 '----------Public Function Min VB.Net With Access ----------
   Public Function Min_Table() As String
       Dim Query As String = "Select Min(اسم الحقل) From الجدول"
       Dim a As String = Nothing
       Dim Cmd As OleDbCommand
       Cmd = New OleDbCommand(Query, Con)
       If Con.State = ConnectionState.Open Then Con.Close()
       Con.Open()
       a = Cmd.ExecuteScalar()
       Con.Close()
       Return a
   End Function
ثم ننادي عليه هكذا
كود :
TextBox5.Text.Text = Min_Table()
سيجلب اقل قيمة لكل السجلات وحتى تحصره في منتج معين ستضع شرط اسم المنتج
ولكن انت تريد اقل تاريخ بصراحة لم اجرب بعد
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
تم الشكر بواسطة: DR.YASER , DR.YASER , NABILWARSAW , asemshahen5
#10
(19-07-20, 09:37 PM)NABILWARSAW كتب : الكود ده ممكن يساعدنى مع احترامى الكامل لارائكم 

بس غلط ممكن تعديله
كود :
     sqlstr = "Select min(date_ex),sanf_kem from store where ID_sanf =@pass"


           cmd = New OleDbCommand(sqlstr, con)
           cmd.Parameters.Add(New OleDbParameter("@pass", ad))
           con.Open()
           Dim dr As OleDb.OleDbDataReader = cmd.ExecuteScalar()
           If dr.Read() Then
               DateTimePicker1.Value = dr.Item(0)
               TextBox5.Text = dr.Item(1)
           End If

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

تحياتي لكل الاساتذة الذين شاركوا في هذا الموضوع

أخي الحبيب NABILWARSAW اعتقد ان هذا الكود ينفذ ما تريد في تحديد اقدم تاريخ للصنف


كود :
Dim cmd As OleDbCommand = New OleDbCommand("SELECT date_ex, sanf_kem from store WHERE ID_sanf =@pass ORDER BY ID date_ex", con)
       If con.State = ConnectionState.Open Then
           con.Close()
       End If
       con.Open()
       Dim dr As OleDbDataReader = cmd.ExecuteReader
       While dr.Read()
           DateTimePicker1.Value = dr2(0)
           TextBox1.Text = dr2(1)
           Exit While
       End While
الرد
تم الشكر بواسطة: NABILWARSAW , NABILWARSAW , ابراهيم ايبو , asemshahen5


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  زيادة عدد من السنوات لحقل تاريخ atefkhalf2004 4 155 16-10-21, 07:58 PM
آخر رد: خالد كامل1
  تقسيم مدة تاريخ (10 سنوات، 5 سنوات ...) b4getws 2 299 26-07-21, 03:55 AM
آخر رد: b4getws
  استعلام عن اكبر تاريخ و اكبر قيمة في الحقلين العيدروس 12 968 24-04-21, 05:37 AM
آخر رد: messry
  [VB.NET] مشكلة عند تحويل المتغير الي تاريخ احمد 2021 4 945 01-04-21, 09:39 PM
آخر رد: احمد 2021
  [VB.NET] البحث عن تاريخ SHAM1 4 849 06-03-21, 07:50 AM
آخر رد: ZaerAllail
  [VB.NET] كيف يمكن استخدام function الموجوده بالاكسيل داخل الفيجوال بيسك دوت نت popritch 1 558 12-02-21, 02:02 AM
آخر رد: أبو عبدالله الحلواني
  [نقاش] عن الكاميرات وكود لحساب تاريخ وعمر الشخص michaelripper42 1 376 09-11-20, 01:42 AM
آخر رد: اسامه الهرماوي
  [سؤال] هل ممكن كود فيجوال بيسك لزر تغير تاريخ الكمبيوتر للوراء وكود اخر ارجاعه طبيبعي jam3h 13 2,246 20-09-20, 08:46 PM
آخر رد: jam3h
  [VB.NET] مشكل في كود انتهاء تاريخ الصلاحية او الدفع rochdi191 6 1,207 23-06-20, 04:42 PM
آخر رد: rochdi191
Lightbulb [VB.NET] حذف صفوف من Access Database تاريخها قبل تاريخ اليوم Doctor GME 2 1,002 07-05-20, 11:03 PM
آخر رد: Doctor GME

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


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