تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كيفية حساب الزكاة - خاص بالمبرمجين (فقه برمجية)
#1
بسم الله الرحمن الرحيم
كيفية حساب الزكاة - خاص بالمبرمجين (فقه برمجية)
إعداد وشرح : شحادة بشير

السلام عليكم ورحمة الله وبركاته وأفضل الصلاة وأتم التسليم على سيدنا محمد وعلى آله وصحبه أجمعين ، وبعد :
{وَأَقِيمُوا الصَّلَاةَ وَآتُوا الزَّكَاةَ وَمَا تُقَدِّمُوا لِأَنْفُسِكُمْ مِنْ خَيْرٍ تَجِدُوهُ عِنْدَ اللَّهِ إِنَّ اللَّهَ بِمَا تَعْمَلُونَ بَصِيرٌ} [البقرة : 110]

أقدم لكم اليوم درساً فريداً أشرح من خلاله فقهياً وبرمجياً كيفية صياغة خوارزميات حساب الزكاة للأموال التي تجب فيها الزكاة في الشريعة الإسلامية ، وقد أطلقت على هذه السلسلة مصطلح (فقه برمجية) ربطاً مني للفقه بالبرمجة وإن شاء الله يكون هذا نافذةً لدروسٍ أخرى سواءً لي أو لغيري من الإخوة المبرمجين في المجال ذاته.


بداية هنالك نقاطٌ لا بد من أخذها بعين الاعتبار ، وهي :
1- يجب أن يكون لديك إلمامٌ بسيط بإحدى لغات البرمجة ، علماً أنني سأشرح الخوارزميات بلغة الفيجوال بيسك.
2- خلافات الفقهاء سنحاول صياغتها برمجياً بطريقةٍ علميةٍ ذكيةٍ بحيث يفهم البرنامج النقاط التي يتفق فيها الفقهاء والنقاط التي يختلفون فيها ، فيجمع آراء المتفقين ويفرّق بين آراء المختلفين كما سنشاهد إن شاء الله تعالى في زكاة النقدين وزكاة حساب المال وغيرهما.
3- سنستخدم إن شاء الله مصطلحاتٍ معاصرةٍ يفهمها الفقيه والمبرمج وبالتالي يسهل على الاثنين فهم الخوارزميات والآراء.
4- النِّصاب : هو مقدار المال الذي لا تجب الزكاة في أقلٍ منه ، وهو يختلف باختلاف أجناس الأموال الزكوية كما سيمر معنا إن شاء الله.


الأموال التي تجب فيها الزكاة :
زكاة بهيمة الأنعام : الإبل – البقر – الغنم
زكاة النقدين (الذهب والفضة) : زكاة الذهب – زكاة الفضة
زكاة الأموال وعُرُوض التجارة : حسب الذهب – حسب الفضة – حسب أقل النصابين
زكاة الزروع والثمار : زكاة العسل
زكاة الكنز والرِّكَاز


أولاً : زكاة بهيمة الأنعام :
بهيمة الأنعام هي : الإبل والبقر والغنم. والأنعام التي تجب فيها الزكاة هي :
الأول – الإبل :
نصاب الإبل : اختلف العلماء في نصاب الإبل على رأيين :
# مذهب الجمهور (الشافيعة والحنابلة والمالكية) :
من 1 - 4 لا شيء فيها.
PHP كود :
If Trim(TxtAnimal.Text) < 5 Then
   LblResultAnimal
.Caption "لا يتوجب عليك إخراج شيءٍ ، فالحد الأدنى لنصاب زكاة الإبل هو : 5 رؤوس"
   
TxtExplicationlAnimal.Text "اتفق جمهور العلماء على أن الحد الأدنى لزكاة الإبل في الشريعة الإسلامية هو 5 رؤوس ، وعدد رؤوس إبلك لم يبلغ ذلك الحد ، لذا لا يتوجب عليك إخراج أي شيءٍ."
   
Exit Sub
End 
If 

TxtAnimal.Text ترمز للمربع الذي وضعت فيه عدد رؤوس الإبل التي تمتلكها.
LblResultAnimal.Caption يرمز لمربع النتيجة التي ستخرج.
TxtExplicationlAnimal.Text يرمز لمربع شرح النتيجة.

من 5 - 9 فيها شاةٌ واحدةٌ.
PHP كود :
If TxtAnimal.Text 10 And TxtAnimal.Text 4 Then
   LblResultAnimal
.Caption "يتوجب عليك إخراج : " "شاة واحدة"
   
TxtExplicationlAnimal.Text "اتفق جمهور العلماء على أن رؤوس الإبل إذا كانت ما بين 5 إلى 9 فتجب فيها شاة واحدة فقط."
End If 
من 10 - 14 فيها شاتان.
نفس الكود السابق مع تعديل الأرقام فقط.
من 15 - 19 فيها 3 شياهٍ.
نفس الكود السابق مع تعديل الأرقام فقط.
من 20 - 24 فيها 4 شياهٍ.
نفس الكود السابق مع تعديل الأرقام فقط.
من 25 - 35 فيها بنتُ مخاضٍ (أي لها سنةٌ ودخلت في الثانية ، سميت بذلك لأن أمها غالباً تكون مَخاضاً أي حاملاً).
نفس الكود السابق مع تعديل الأرقام فقط.
من 36 - 45 فيها بنتُ لبونٍ (أي أتمت سنتين ودخلت في الثالثة ، سميت بذلك لأن أمها آن لها أن تلد فتصير لبوناً أي ذات لبنٍ لأخرى غالباً).
نفس الكود السابق مع تعديل الأرقام فقط.
من 46 - 60 فيها حِقّةٌ (أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل).
نفس الكود السابق مع تعديل الأرقام فقط.
من 61 - 75 فيها جَذَعةٌ (أي أتمت أربع سنواتٍ ودخلت في الخامسة).
نفس الكود السابق مع تعديل الأرقام فقط.
من 76 - 90 فيها بنتا لبون.
نفس الكود السابق مع تعديل الأرقام فقط.
من 91 - 120 فيها حِقّتان.
نفس الكود السابق مع تعديل الأرقام فقط.
إذن إلى هنا الأمر سهلٌ برمجياً كما شاهدنا ، ولكن قال الجمهور : إذا زاد الرقم عن ذلك ففي كل 40 بنت لبونٍ ، وفي كل 50 حِقّةٌ ، وهنا بيت القصيد :
يجب أن نأخذ الرقم وهذا الرقم يجب أن نعرف كم 40 يوجد فيه أو كم 50 يوجد فيه أو كم 50 وكم 40 يوجد فيه ؟! إذن هنالك عدة احتمالات.
وهنا يجب أن نصيغ خوارزمية تقوم بعمليتين ، هما :
1- جعل الرقم قابلاً للقسمة على عشرة ؛ لأن العلماء تسامحوا في الوقص ، والوقص : هو الرقم الموجود بين فريضتين ؛ مثلاً : الرقم 235 موجود بين 230 و 240 فيأخذ حكم الرقم 230 ، وبما أن الجمهور قالوا : إذا زاد الرقم عن ذلك ففي كل 40 بنت لبونٍ ، وفي كل 50 حِقّةٌ فمنطقياً يجب أن يكون قابلاً للقسمة على عشرة.

PHP كود :
'تعريف متغير لوضع عدد رؤوس الإبل فيه بعد جعلها قابلة للقسمة على عشرة
Dim LeftOver As String
LblResultAnimal.Caption = ""
LeftOver = (TxtAnimal.Text Mod 10)
LeftOver = TxtAnimal.Text - LeftOver 

2- هذه الخوارزمية يجب أن تكون فيها احتمالات ، وهي :
- إذا كان عدد الرؤوس يقبل القسمة على 40 دون باقٍ أو على 50 دون باقٍ فنحن مخيرون بما نخرجه ؛ مثلاً : شخصٌ عنده 200 رأس من الإبل ، كما نلاحظ فإن العدد 200 يقبل القسمة على 40 ويقبل كذلك القسمة على 50 ، فنقول له : عليك أن تخرج 5 بنات لبون أو 4 حِقاق.

PHP كود :
If LeftOver Mod 40 And LeftOver Mod 50 0 Then
   LblResultAnimal 
"يتوجب عليك إخراج : " LeftOver 40 " بنت لبون" " أو " LeftOver 50 " حِقّة"
   
TxtExplicationlAnimal.Text "تجري مذاهب الجمهور في زكاة الإبل حسب حالتك هذه : في كل 40 منها يتوجب عليك إخراج بنت لبون ، وفي كل 50 منها يتوجب عليك إخراج حِقّة ، وعدد رؤوس البقر عندك تنطبق عليه الحالتان." vbNewLine _
   
"# بنت لبون : أي أتمت سنتين ودخلت في الثالثة ، سميت بذلك لأن أمها آن لها أن تلد فتصير لبوناً أي ذات لبنٍ لأخرى غالباً." vbNewLine _
   
"# حِقّة : أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل."
End If 

- إذا كان عدد الرؤوس يقبل القسمة على 40 فقط دون باقٍ ، فالخارج يجب أن يكون من بنات لبون ؛ مثلاً : شخصٌ عنده 160 رأساً من الإبل ، كما نلاحظ فإن العدد 160 يقبل القسمة على 40 ولا يقبل القسمة على 50 ، في هذه الحالة نقول له : عليك أن تخرج 4 بنات لبون.

PHP كود :
If LeftOver Mod 40 0 Then
   LblResultAnimal 
"يتوجب عليك إخراج : " Int(LeftOver 40) & " بنت لبون"
   
TxtExplicationlAnimal.Text "تجري مذاهب الفقهاء في زكاة الإبل حسب حالتك هذه : في كل 40 منها يتوجب عليك إخراج بنت لبون." vbNewLine _
   
"# بنت لبون : أي أتمت سنتين ودخلت في الثالثة ، سميت بذلك لأن أمها آن لها أن تلد فتصير لبوناً أي ذات لبنٍ لأخرى غالباً."
End If 

- إذا كان عدد الرؤوس يقبل القسمة على 50 فقط دون باقٍ ، فالخارج يجب أن يكون من حِقاق ؛ مثلاً : شخصٌ عنده 150 رأساً من الإبل ، كما نلاحظ فإن العدد 150 يقبل القسمة على 50 ولا يقبل القسمة على 40 ، في هذه الحالة نقول له : عليك أن تخرج 3 حِقاق.
PHP كود :
If LeftOver Mod 50 0 Then
   LblResultAnimal 
"يتوجب عليك إخراج : " Int(LeftOver 50) & " حِقّة"
   
TxtExplicationlAnimal.Text "تجري مذاهب الفقهاء في زكاة الإبل حسب حالتك هذه : في كل 50 منها يتوجب عليك إخراج حِقّة." vbNewLine _
   
"# حِقّة : أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل."
End If 

- إذا كان عدد الرؤوس لا يقبل القسمة لا على 40 ولا على 50 ولكن مجموعه يحتوي على أربعين واحدة وخمسين واحدة أو على أربعين واحدة وعدة خمسينات أو بالعكس أي يحتوي على خمسين واحدة وعدة أربعينات ، أو يحوي عدة أربعينات وعدة خمسينات ، وهنا يجب أن نقوم ببرمجة حلقة نضع فيها متغير تزداد قيمته في كل دورة. ولنأخذ مثالاً افتراضياً :
شخصٌ عنده عدد رؤوس من الإبل تبلغ 270 رأساً ، كم زكاة إبله ؟
الجواب هو : 3 بنات لبونٍ و 3 حِقاقٍ ، ولكن كيف عرفنا ؟ الجواب : عن طريق حلقةٍ برمجيةٍ تقوم بالآتي :

PHP كود :
'متغير يمثل عدد مرات دوران الحلقة
  Dim s As Integer
  '
قيمة المتغير البدائية صفر
  s 
0
  
Do
     
'في كل دورة سنضيف للمتغير واحداً
     s = s + 1
     '
نأخذ عدد الرؤوس ثم نطرح منه 40 مضروبة بالمتغير الذي ستكون قيمته واحداً أول دورة
     
'الناتج نقسمه على 50 فإن كان الباقي صفراً نعطيه النتيجة وإلا ننزل للشرط الثاني
     If (LeftOver - (40 * s)) Mod 50 = 0 Then
        LblResultAnimal = "يتوجب عليك إخراج : " & s & " بنت لبون" & " و " & Int((LeftOver - (40 * s)) / 50) & " حِقّة"
        Exit Do
     '
الشرط الثاني نأخذ عدد الرؤوس ثم نطرح منه 50 مضروبة بالمتغير الذي ستكون قيمته واحداً أول دورة
     
'الناتج نقسمه على 40 فإن كان الباقي صفراً نعطيه النتيجة وإلا سندور دورة ثانية
     '
وفي الدورة الثانية ستصبح قيمة المتغير اثنان وهكذا
     
ElseIf (LeftOver - (50 s)) Mod 40 0 Then
        LblResultAnimal 
"يتوجب عليك إخراج : " Int((LeftOver - (50 s)) / 40) & " بنت لبون" " و " " حِقّة"
        
Exit Do
     
End If
  
Loop Until LblResultAnimal <> ""
  
TxtExplicationlAnimal.Text "تجري مذاهب الفقهاء في زكاة الإبل حسب حالتك هذه : في كل 40 منها يتوجب عليك إخراج بنت لبون ، وفي كل 50 منها يتوجب عليك إخراج حِقّة." vbNewLine _
  
"# بنت لبون : أي أتمت سنتين ودخلت في الثالثة ، سميت بذلك لأن أمها آن لها أن تلد فتصير لبوناً أي ذات لبنٍ لأخرى غالباً." vbNewLine _
  
"# حِقّة : أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل." 

وهذا هو الكود النهائي والكامل لزكاة الإبل حسب مذهب الجمهور :
PHP كود :
'زكاة الإبل عند الجمهور
Dim LeftOver As String
LblResultAnimal.Caption = ""
LeftOver = (TxtAnimal.Text Mod 10)
LeftOver = TxtAnimal.Text - LeftOver
'
إِذَا زَادَتْ عَلَى عِشْرِينَ وَمِائَةٍ فَفِي كُل أَرْبَعِينَ بِنْتُ لَبُونٍ ، وَفِي كُل خَمْسِينَ حِقَّةٌ
'بنت مخاض: لها سنة ودخلت في الثانية
'
بنت لبونأتمت سنتين ودخلت في الثالثة
'حِقّة: أتمت ثلاث سنين ودخلت في الرابعة
'
جَذَعة:  أتمت أربع سنين ودخلت في الخامسة
If Trim(TxtAnimal.Text) < 5 Then
   LblResultAnimal
.Caption "لا يتوجب عليك إخراج شيءٍ ، فالحد الأدنى لنصاب زكاة الإبل هو : 5 رؤوس"
   
TxtExplicationlAnimal.Text "اتفق جمهور العلماء على أن الحد الأدنى لزكاة الإبل في الشريعة الإسلامية هو 5 رؤوس ، وعدد رؤوس إبلك لم يبلغ ذلك الحد ، لذا لا يتوجب عليك إخراج أي شيءٍ."
   
Exit Sub
End 
If

If 
TxtAnimal.Text 10 And TxtAnimal.Text 4 Then
   LblResultAnimal
.Caption "يتوجب عليك إخراج : " "شاة واحدة"
   
TxtExplicationlAnimal.Text "اتفق جمهور العلماء على أن رؤوس الإبل إذا كانت ما بين 5 إلى 9 فتجب فيها شاة واحدة فقط."
ElseIf TxtAnimal.Text >= 10 And TxtAnimal.Text 15 Then
   LblResultAnimal
.Caption "يتوجب عليك إخراج : " "شاتين"
   
TxtExplicationlAnimal.Text "اتفق جمهور العلماء على أن رؤوس الإبل إذا كانت ما بين 10 إلى 14 فتجب فيها شاتان فقط."
ElseIf TxtAnimal.Text >= 15 And TxtAnimal.Text 20 Then
   LblResultAnimal
.Caption "يتوجب عليك إخراج : " "ثلاث شياه"
   
TxtExplicationlAnimal.Text "اتفق جمهور العلماء على أن رؤوس الإبل إذا كانت ما بين 15 إلى 19 فتجب فيها ثلاث شياهٍ فقط."
ElseIf TxtAnimal.Text >= 20 And TxtAnimal.Text 25 Then
   LblResultAnimal
.Caption "يتوجب عليك إخراج : " "أربع شياه"
   
TxtExplicationlAnimal.Text "اتفق جمهور العلماء على أن رؤوس الإبل إذا كانت ما بين 20 إلى 24 فتجب فيها أربع شياهٍ فقط."
ElseIf TxtAnimal.Text >= 25 And TxtAnimal.Text 36 Then
   LblResultAnimal
.Caption "يتوجب عليك إخراج : " "بنت مخاض"
   
TxtExplicationlAnimal.Text "اتفق جمهور العلماء على أن رؤوس الإبل إذا كانت ما بين 25 إلى 35 فتجب فيها بنت مخاض." vbNewLine _
   
"# بنت مخاض : أي لها سنة ودخلت في الثانية ، سميت بذلك لأن أمها غالباً تكون مَخاضاً أي حاملاً."
ElseIf TxtAnimal.Text >= 36 And TxtAnimal.Text 46 Then
   LblResultAnimal
.Caption "يتوجب عليك إخراج : " "بنت لبون "
   
TxtExplicationlAnimal.Text "اتفق جمهور العلماء على أن رؤوس الإبل إذا كانت ما بين 36 إلى 45 فتجب فيها بنت لبون." vbNewLine _
   
"# بنت لبون : أي أتمت سنتين ودخلت في الثالثة ، سميت بذلك لأن أمها آن لها أن تلد فتصير لبوناً أي ذات لبنٍ لأخرى غالباً."
ElseIf TxtAnimal.Text >= 46 And TxtAnimal.Text 61 Then
   LblResultAnimal
.Caption "يتوجب عليك إخراج : " "حِقّة"
   
TxtExplicationlAnimal.Text "اتفق جمهور العلماء على أن رؤوس الإبل إذا كانت ما بين 46 إلى 60 فتجب فيها حِقّة." vbNewLine _
   
"# حِقّة : أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل."
ElseIf TxtAnimal.Text >= 61 And TxtAnimal.Text 76 Then
   LblResultAnimal
.Caption "يتوجب عليك إخراج : " "جَذَعة"
   
TxtExplicationlAnimal.Text "اتفق جمهور العلماء على أن رؤوس الإبل إذا كانت ما بين 61 إلى 75 فتجب فيها جَذَعة." vbNewLine _
   
"# جَذَعة : أي أتمت أربع سنواتٍ ودخلت في الخامسة."
ElseIf TxtAnimal.Text >= 76 And TxtAnimal.Text 91 Then
   LblResultAnimal
.Caption "يتوجب عليك إخراج : " "بنتا لبون"
   
TxtExplicationlAnimal.Text "اتفق جمهور العلماء على أن رؤوس الإبل إذا كانت ما بين 76 إلى 90 فتجب فيها بنتا لبون." vbNewLine _
   
"# بنت لبون : أي أتمت سنتين ودخلت في الثالثة ، سميت بذلك لأن أمها آن لها أن تلد فتصير لبوناً أي ذات لبنٍ لأخرى غالباً."
ElseIf TxtAnimal.Text >= 91 And TxtAnimal.Text 121 Then
   LblResultAnimal
.Caption "يتوجب عليك إخراج : " "حِقتان"
   
TxtExplicationlAnimal.Text "اتفق جمهور العلماء على أن رؤوس الإبل إذا كانت ما بين 91 إلى 120 فتجب فيها حِقتان." vbNewLine _
   
"# حِقّة : أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل."
ElseIf LeftOver Mod 40 And LeftOver Mod 50 0 Then
   LblResultAnimal 
"يتوجب عليك إخراج : " LeftOver 40 " بنت لبون" " أو " LeftOver 50 " حِقّة"
   
TxtExplicationlAnimal.Text "تجري مذاهب الجمهور في زكاة الإبل حسب حالتك هذه : في كل 40 منها يتوجب عليك إخراج بنت لبون ، وفي كل 50 منها يتوجب عليك إخراج حِقّة ، وعدد رؤوس البقر عندك تنطبق عليه الحالتان." vbNewLine _
   
"# بنت لبون : أي أتمت سنتين ودخلت في الثالثة ، سميت بذلك لأن أمها آن لها أن تلد فتصير لبوناً أي ذات لبنٍ لأخرى غالباً." vbNewLine _
   
"# حِقّة : أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل."
ElseIf LeftOver Mod 40 0 Then
   LblResultAnimal 
"يتوجب عليك إخراج : " Int(LeftOver 40) & " بنت لبون"
   
TxtExplicationlAnimal.Text "تجري مذاهب الفقهاء في زكاة الإبل حسب حالتك هذه : في كل 40 منها يتوجب عليك إخراج بنت لبون." vbNewLine _
   
"# بنت لبون : أي أتمت سنتين ودخلت في الثالثة ، سميت بذلك لأن أمها آن لها أن تلد فتصير لبوناً أي ذات لبنٍ لأخرى غالباً."
ElseIf LeftOver Mod 50 0 Then
   LblResultAnimal 
"يتوجب عليك إخراج : " Int(LeftOver 50) & " حِقّة"
   
TxtExplicationlAnimal.Text "تجري مذاهب الفقهاء في زكاة الإبل حسب حالتك هذه : في كل 50 منها يتوجب عليك إخراج حِقّة." vbNewLine _
   
"# حِقّة : أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل."
Else
  
'متغير يمثل عدد مرات دوران الحلقة
  Dim s As Integer
  '
قيمة المتغير البدائية صفر
  s 
0
  
Do
     
'في كل دورة سنضيف للمتغير واحداً
     s = s + 1
     '
نأخذ عدد الرؤوس ثم نطرح منه 40 مضروبة بالمتغير الذي ستكون قيمته واحداً أول دورة
     
'الناتج نقسمه على 50 فإن كان الباقي صفراً نعطيه النتيجة وإلا ننزل للشرط الثاني
     If (LeftOver - (40 * s)) Mod 50 = 0 Then
        LblResultAnimal = "يتوجب عليك إخراج : " & s & " بنت لبون" & " و " & Int((LeftOver - (40 * s)) / 50) & " حِقّة"
        Exit Do
     '
الشرط الثاني نأخذ عدد الرؤوس ثم نطرح منه 50 مضروبة بالمتغير الذي ستكون قيمته واحداً أول دورة
     
'الناتج نقسمه على 40 فإن كان الباقي صفراً نعطيه النتيجة وإلا سندور دورة ثانية
     '
وفي الدورة الثانية ستصبح قيمة المتغير اثنان وهكذا
     
ElseIf (LeftOver - (50 s)) Mod 40 0 Then
        LblResultAnimal 
"يتوجب عليك إخراج : " Int((LeftOver - (50 s)) / 40) & " بنت لبون" " و " " حِقّة"
        
Exit Do
     
End If
  
Loop Until LblResultAnimal <> ""
  
TxtExplicationlAnimal.Text "تجري مذاهب الفقهاء في زكاة الإبل حسب حالتك هذه : في كل 40 منها يتوجب عليك إخراج بنت لبون ، وفي كل 50 منها يتوجب عليك إخراج حِقّة." vbNewLine _
  
"# بنت لبون : أي أتمت سنتين ودخلت في الثالثة ، سميت بذلك لأن أمها آن لها أن تلد فتصير لبوناً أي ذات لبنٍ لأخرى غالباً." vbNewLine _
  
"# حِقّة : أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل."
End If 

# مذهب الحنفية :
الحنفية اتفقوا مع الجمهور في النصاب من أوله إلى 120 رأساً ، ولكنهم اختلفوا معهم فيما بعد 120 رأساً.
وقد رأينا سابقاً مذهب الجمهور بأنه إذا زاد الرقم عن ذلك ففي كل 40 بنت لبونٍ ، وفي كل 50 حِقّةٌ.
أما الحنفية فذهبوا إلى أن الفريضة تستأنف بعد 120 ، ففي كل خمسٍ مما زاد عليها شاةٌ بالإضافة إلى الحِقّتين ، فإن بلغ الزّائد ما فيه بنتُ مخاضٍ أو بنتُ لبونٍ وجبت إلى أن يبلغ الزائد ما فيه حِقّةٌ فتجب.
قد يقول قائل : هذا الكلام الفقهي غير واضحٍ وخاصةً بالنسبة للمبرمج !!.. هذا صحيحٌ ، لذا دعوني أشرح لكم قول الحنفية من الناحية العلمية والبرمجية :
الحنفية قصدوا بأن عدد رؤوس الإبل إذا كان أكثر من 120 فإننا نأخذ عن كل خمسين حِقّةٌ ، ثم ننظر إلى الباقي إن كان هنالك باقٍ :
- فإذا كان أقل من 25 فتجب في كل 5 رؤوس شاة وفي 10 رؤوس شاتان وفي 15 رأساً ثلاث شياهٍ وفي 20 رأساً أربع شياهٍ ، طبعاً هذا بالإضافة للحِقاق المتوجبة عليك.
- وإذا كان أكبر من 24 وأصغر من 36 فتجب فيه بنت مخاضٍ ، طبعاً هذا بالإضافة للحِقاق المتوجبة عليك.
- وإذا كان أكبر من 35 وأصغر من 46 فتجب فيه بنت لبونٍ ، طبعاً هذا بالإضافة للحِقاق المتوجبة عليك.
- وإذا كان أكبر من 45 وأصغر من 50 فتجب فيه حِقّة تضاف للحِقاق المتوجبة عليك.
وإليك بعض الأمثلة حسب رأي الحنفية فيما زاد على 120 رأساً :
^ شخصٌ عنده 220 رأساً من الإبل : زكاته هي : أربع حِقاقٍ وأربع شياهٍ. (220 / 50 = 4 حِقاقٍ. الباقي من القسمة 20 فيها أربعة شياهٍ).
^ شخصٌ عنده 325 رأساً من الإبل : زكاته هي : ست حِقاقٍ وبنت مخاضٍ. (325 / 50 = 6 حِقاقٍ. الباقي من القسمة 25 فيه بنت مخاضٍ.)
^ شخصٌ عنده 295 رأساً من الإبل : زكاته هي : خمس حِقاقٍ وبنت لبونٍ. (295 / 50 = 5 حِقاقٍ. الباقي من القسمة 45 فيه بنت لبونٍ).
^ شخصٌ عنده 296 رأساً من الإبل : زكاته هي : ست حِقاقٍ. (296 / 50 = 5 حِقاقٍ. الباقي من القسمة 46 وفيه حِقّةٌ. أصبح المجموع ست حِقاقٍ).
^ شخصٌ عنده 500 رأسٍ من الإبل : زكاته هي : عشر حِقاقٍ. (500 / 50 = 10 حِقاقٍ. ولا يتوجب عليه شيءٌ آخر لأن الباقي من القسمة صفر).
الأمر أظنه أصبح سهلاً من الناحية البرمجيّة ، وإليك الكود النهائي لزكاة الإبل حسب مذهب الحنفية :

PHP كود :
'زكاة الإبل عند الحنفية
LblResultAnimal.Caption = ""
If Trim(TxtAnimal.Text) < 5 Then
   LblResultAnimal.Caption = "لا يتوجب عليك إخراج شيءٍ ، فالحد الأدنى لنصاب زكاة الإبل هو : 5 رؤوس"
   TxtExplicationlAnimal.Text = "اتفق جمهور العلماء على أن الحد الأدنى لزكاة الإبل في الشريعة الإسلامية هو 5 رؤوس ، وعدد رؤوس إبلك لم يبلغ ذلك الحد ، لذا لا يتوجب عليك إخراج أي شيءٍ."
   Exit Sub
End If

If TxtAnimal.Text < 10 And TxtAnimal.Text > 4 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : " & "شاة واحدة"
   TxtExplicationlAnimal.Text = "اتفق جمهور العلماء على أن رؤوس الإبل إذا كانت ما بين 5 إلى 9 فتجب فيها شاة واحدة فقط."
ElseIf TxtAnimal.Text >= 10 And TxtAnimal.Text < 15 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : " & "شاتان"
   TxtExplicationlAnimal.Text = "اتفق جمهور العلماء على أن رؤوس الإبل إذا كانت ما بين 10 إلى 14 فتجب فيها شاتان فقط."
ElseIf TxtAnimal.Text >= 15 And TxtAnimal.Text < 20 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : " & "ثلاث شياه"
   TxtExplicationlAnimal.Text = "اتفق جمهور العلماء على أن رؤوس الإبل إذا كانت ما بين 15 إلى 19 فتجب فيها ثلاث شياهٍ فقط."
ElseIf TxtAnimal.Text >= 20 And TxtAnimal.Text < 25 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : " & "أربع شياه"
   TxtExplicationlAnimal.Text = "اتفق جمهور العلماء على أن رؤوس الإبل إذا كانت ما بين 20 إلى 24 فتجب فيها أربع شياهٍ فقط."
ElseIf TxtAnimal.Text >= 25 And TxtAnimal.Text < 36 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : " & "بنت مخاض"
   TxtExplicationlAnimal.Text = "اتفق جمهور العلماء على أن رؤوس الإبل إذا كانت ما بين 25 إلى 35 فتجب فيها بنت مخاض." & vbNewLine & _
   "# بنت مخاض : أي لها سنة ودخلت في الثانية ، سميت بذلك لأن أمها غالباً تكون مَخاضاً أي حاملاً."
ElseIf TxtAnimal.Text >= 36 And TxtAnimal.Text < 46 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : " & "بنت لبون"
   TxtExplicationlAnimal.Text = "اتفق جمهور العلماء على أن رؤوس الإبل إذا كانت ما بين 36 إلى 45 فتجب فيها بنت لبون." & vbNewLine & _
   "# بنت لبون : أي أتمت سنتين ودخلت في الثالثة ، سميت بذلك لأن أمها آن لها أن تلد فتصير لبوناً أي ذات لبنٍ لأخرى غالباً."
ElseIf TxtAnimal.Text >= 46 And TxtAnimal.Text < 61 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : " & "حِقّة"
   TxtExplicationlAnimal.Text = "اتفق جمهور العلماء على أن رؤوس الإبل إذا كانت ما بين 46 إلى 60 فتجب فيها حِقّة." & vbNewLine & _
   "# حِقّة : أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل."
ElseIf TxtAnimal.Text >= 61 And TxtAnimal.Text < 76 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : " & "جَذَعة"
   TxtExplicationlAnimal.Text = "اتفق جمهور العلماء على أن رؤوس الإبل إذا كانت ما بين 61 إلى 75 فتجب فيها جَذَعة." & vbNewLine & _
   "# جَذَعة : أي أتمت أربع سنواتٍ ودخلت في الخامسة."
ElseIf TxtAnimal.Text >= 76 And TxtAnimal.Text < 91 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : " & "بنتا لبون"
   TxtExplicationlAnimal.Text = "اتفق جمهور العلماء على أن رؤوس الإبل إذا كانت ما بين 76 إلى 90 فتجب فيها بنتا لبون." & vbNewLine & _
   "# بنت لبون : أي أتمت سنتين ودخلت في الثالثة ، سميت بذلك لأن أمها آن لها أن تلد فتصير لبوناً أي ذات لبنٍ لأخرى غالباً."
ElseIf TxtAnimal.Text >= 91 And TxtAnimal.Text < 125 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : " & "حِقتان"
   TxtExplicationlAnimal.Text = "ذهب الحنفية إلى أن رؤوس الإبل إذا كانت ما بين 91 إلى 124 فتجب فيها حِقتان." & vbNewLine & _
   "# حِقّة : أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل."
ElseIf TxtAnimal.Text >= 125 And TxtAnimal.Text < 130 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : " & "حِقتان وشاة"
   TxtExplicationlAnimal.Text = "ذهب الحنفية إلى أن رؤوس الإبل إذا كانت ما بين 125 إلى 129 فتجب فيها حِقتان وشاة." & vbNewLine & _
   "# حِقّة : أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل."
ElseIf TxtAnimal.Text >= 130 And TxtAnimal.Text < 135 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : " & "حِقتان وشاتان"
   TxtExplicationlAnimal.Text = "ذهب الحنفية إلى أن رؤوس الإبل إذا كانت ما بين 130 إلى 134 فتجب فيها حِقتان وشاتان." & vbNewLine & _
   "# حِقّة : أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل."
ElseIf TxtAnimal.Text >= 135 And TxtAnimal.Text < 140 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : " & "حِقتان و3 شياه"
   TxtExplicationlAnimal.Text = "ذهب الحنفية إلى أن رؤوس الإبل إذا كانت ما بين 135 إلى 139 فتجب فيها حِقتان و3 شياه." & vbNewLine & _
   "# حِقّة : أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل."
ElseIf TxtAnimal.Text >= 140 And TxtAnimal.Text < 145 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : " & "حِقتان و4 شياه"
   TxtExplicationlAnimal.Text = "ذهب الحنفية إلى أن رؤوس الإبل إذا كانت ما بين 140 إلى 144 فتجب فيها حِقتان و4 شياه." & vbNewLine & _
   "# حِقّة : أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل."
ElseIf TxtAnimal.Text >= 145 And TxtAnimal.Text < 150 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : " & "حِقتان وبنت مخاض"
   TxtExplicationlAnimal.Text = "ذهب الحنفية إلى أن رؤوس الإبل إذا كانت ما بين 145 إلى 149 فتجب فيها حِقتان وبنت مخاض." & vbNewLine & _
   "# حِقّة : أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل." & vbNewLine & _
   "# بنت مخاض : أي لها سنة ودخلت في الثانية ، سميت بذلك لأن أمها غالباً تكون مَخاضاً أي حاملاً."
ElseIf TxtAnimal.Text >= 150 And TxtAnimal.Text < 155 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : " & "ثلاث حِقاق"
   TxtExplicationlAnimal.Text = "ذهب الحنفية إلى أن رؤوس الإبل إذا كانت ما بين 150 إلى 154 فتجب فيها ثلاث حِقاق." & vbNewLine & _
   "# حِقّة : أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل."
Else
   LblResultAnimal.Caption = Int(TxtAnimal.Text / 50) & " حِقّة"
   If TxtAnimal.Text Mod 50 < 25 And TxtAnimal.Text Mod 50 > 4 Then
      LblResultAnimal.Caption = "يتوجب عليك إخراج : " & LblResultAnimal.Caption & " و " & Int((TxtAnimal.Text Mod 50) / 5) & " شاة"
      TxtExplicationlAnimal.Text = "عند الحنفية تستأنف الفريضة في الإبل فبالإضافة للحِقّة التي تجب في كل 50 رأساً من الإبل ، ننظر للباقي فإذا كان أقل من 25 فتجب في كل 5 رؤوس شاة وفي 10 رؤوس شاتان وفي 15 رأساً ثلاث شياهٍ وفي 20 رأساً أربع شياهٍ ، طبعاً هذا بالإضافة للحِقاق المتوجبة عليك." & vbNewLine & _
      "# حِقّة : أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل."
   ElseIf TxtAnimal.Text Mod 50 >= 25 And TxtAnimal.Text Mod 50 < 36 Then
      LblResultAnimal.Caption = "يتوجب عليك إخراج : " & LblResultAnimal.Caption & " و " & "بنت مخاض"
      TxtExplicationlAnimal.Text = "عند الحنفية تستأنف الفريضة في الإبل فبالإضافة للحِقّة التي تجب في كل 50 رأساً من الإبل ، ننظر للباقي فإذا كان أكبر من 24 وأصغر من 36 فتجب فيه بنت مخاض ، طبعاً هذا بالإضافة للحِقاق المتوجبة عليك." & vbNewLine & _
      "# حِقّة : أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل." & vbNewLine & _
      "# بنت مخاض : أي لها سنة ودخلت في الثانية ، سميت بذلك لأن أمها غالباً تكون مَخاضاً أي حاملاً."
   ElseIf TxtAnimal.Text Mod 50 >= 36 And TxtAnimal.Text Mod 50 < 46 Then
      LblResultAnimal.Caption = "يتوجب عليك إخراج : " & LblResultAnimal.Caption & " و " & "بنت لبون"
      TxtExplicationlAnimal.Text = "عند الحنفية تستأنف الفريضة في الإبل فبالإضافة للحِقّة التي تجب في كل 50 رأساً من الإبل ، ننظر للباقي فإذا كان أكبر من 35 وأصغر من 46 فتجب فيه بنت لبون ، طبعاً هذا بالإضافة للحِقاق المتوجبة عليك." & vbNewLine & _
      "# حِقّة : أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل." & vbNewLine & _
      "# بنت لبون : أي أتمت سنتين ودخلت في الثالثة ، سميت بذلك لأن أمها آن لها أن تلد فتصير لبوناً أي ذات لبنٍ لأخرى غالباً."
   ElseIf TxtAnimal.Text Mod 50 >= 46 And TxtAnimal.Text Mod 50 < 50 Then
      LblResultAnimal.Caption = "يتوجب عليك إخراج : " & Int(TxtAnimal.Text / 50) + 1 & " حِقّة"
      TxtExplicationlAnimal.Text = "عند الحنفية تستأنف الفريضة في الإبل فبالإضافة للحِقّة التي تجب في كل 50 رأساً من الإبل ، ننظر للباقي فإذا كان أكبر من 45 وأصغر من 50 فتجب فيه حِقّة تضاف للحِقاق المتوجبة عليك." & vbNewLine & _
      "# حِقّة : أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل."
   Else
      LblResultAnimal.Caption = "يتوجب عليك إخراج : " & Int(TxtAnimal.Text / 50) & " حِقّة"
      TxtExplicationlAnimal.Text = "تجري مذاهب الفقهاء في زكاة الإبل حسب حالتك هذه : في كل 50 منها يتوجب عليك إخراج حِقّة." & vbNewLine & _
     "# حِقّة : أي أتمت ثلاث سنواتٍ ودخلت في الرابعة ، سميت بذلك لأنها استحقت أن تُركَب ويُحمَل عليها ويطرقها الفحل."
   End If
End If 

الثاني – البقر :
نصاب البقر : نصابها محلُ اتفاقٍ بين العلماء ، وإذا فهمت نصاب زكاة الإبل حسب رأي الجمهور من الناحية البرمجية فسيسهل عليك فهم نصاب زكاة البقر ، وإليك التفصيل :
من 1 - 29 لا شيء فيها.
من 30 - 39 فيها تبيعٌ أو تبيعةٌ (عند الجمهور : هو ما أتم السنة ودخل في الثانية. وأما عند المالكية : فهو ما أتم السنتين ودخل في الثالثة).
من 40 - 59 فيها مسنّةٌ (عند الجمهور : هي ما أتمت السنتين ودخلت في الثالثة. وأما عند المالكية : فهي ما أتمت ثلاث سنوات ودخلت في الرابعة).
من 60 - 69 فيها تبيعان.
من 70 - 79 فيها تبيعٌ ومسنّةٌ.
من 80 - 89 فيها مسنّتان.
من 90 - 99 فيها 3 أتبعةٍ.
من 100 - 109 فيها تبيعان ومسنّةٌ.
من 110 - 119 فيها تبيعٌ ومسنّتان.
من 120 - 129 فيها 4 أتبعةٍ أو 3 مسنّاتٍ.
وهكذا في كل ثلاثين تبيعٌ أو تبيعةٌ ، وفي كل أربعين مسنّةٌ.
كما تشاهد فكرة الكود لا تختلف أبداً عن نصاب زكاة الإبل عند الجمهور اللهم إلا التعديل في الأرقام ، وإليك كود حساب زكاة البقر :

PHP كود :
'زكاة البقر
LblResultAnimal.Caption = ""
If Trim(TxtAnimal.Text) < 30 Then
   LblResultAnimal.Caption = "لا يتوجب عليك إخراج شيءٍ ، فالحد الأدنى لنصاب زكاة البقر هو : 30 بقرة"
   TxtExplicationlAnimal.Text = "اتفق جمهور العلماء على أن الحد الأدنى لزكاة البقر في الشريعة الإسلامية هو 30 بقرة وعدد رؤوس البقر عندك لم يبلغ ذلك الحد ، لذا لا يتوجب عليك إخراج أي شيءٍ."
   Exit Sub
End If
Dim LeftOver As String
LeftOver = (TxtAnimal.Text Mod 10)
LeftOver = TxtAnimal.Text - LeftOver

If LeftOver Mod 30 = 0 And LeftOver Mod 40 = 0 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : " & LeftOver / 30 & " تبيع" & " أو " & LeftOver / 40 & " مسنة"
   TxtExplicationlAnimal.Text = "تجري مذاهب الفقهاء في زكاة البقر حسب حالتك هذه : في كل 30 بقرة يتوجب عليك إخراج تبيع أو تبيعة ، وفي كل 40 بقرة يتوجب عليك إخراج مُسِنَّة ، وعدد رؤوس البقر عندك تنطبق عليه الحالتان." & vbNewLine & _
   "# والتبيع أو التبيعة : عند الجمهور : هو ما أتم السنة ودخل في الثانية. وأما عند المالكية : فهو ما أتم السنتين ودخل في الثالثة." & vbNewLine & _
   "# والمسنة : عند الجمهور : هي ما أتمت السنتين ودخلت في الثالثة. وأما عند المالكية : فهي ما أتمت ثلاث سنوات ودخلت في الرابعة."
ElseIf LeftOver Mod 30 = 0 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : " & Int(LeftOver / 30) & " تبيع"
   TxtExplicationlAnimal.Text = "تجري مذاهب الفقهاء في زكاة البقر حسب حالتك هذه : في كل 30 بقرة يتوجب عليك إخراج تبيع أو تبيعة." & vbNewLine & _
   "# والتبيع أو التبيعة : عند الجمهور : هو ما أتم السنة ودخل في الثانية. وأما عند المالكية : فهو ما أتم السنتين ودخل في الثالثة."
ElseIf LeftOver Mod 40 = 0 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : " & Int(LeftOver / 40) & " مسنة"
   TxtExplicationlAnimal.Text = "تجري مذاهب الفقهاء في زكاة البقر حسب حالتك هذه : في كل 40 بقرة يتوجب عليك إخراج مُسِنَّة." & vbNewLine & _
   "# والمسنة : عند الجمهور : هي ما أتمت السنتين ودخلت في الثالثة. وأما عند المالكية : فهي ما أتمت ثلاث سنوات ودخلت في الرابعة."
Else
  Dim s As Integer
  s = 0
  Do
     s = s + 1
     If (LeftOver - (30 * s)) Mod 40 = 0 Then
        LblResultAnimal.Caption = "يتوجب عليك إخراج : " & s & " تبيع" & " و " & Int((LeftOver - (30 * s)) / 40) & " مسنة"
        Exit Do
     ElseIf (LeftOver - (40 * s)) Mod 30 = 0 Then
        LblResultAnimal.Caption = "يتوجب عليك إخراج : " & Int((LeftOver - (40 * s)) / 30) & " تبيع" & " و " & s & " مسنة"
        Exit Do
     End If
  Loop Until LblResultAnimal.Caption <> ""
  TxtExplicationlAnimal.Text = "تجري مذاهب الفقهاء في زكاة البقر حسب حالتك هذه : في كل 30 بقرة يتوجب عليك إخراج تبيع أو تبيعة ، وفي كل 40 بقرة يتوجب عليك إخراج مُسِنَّة." & vbNewLine & _
  "# والتبيع أو التبيعة : عند الجمهور : هو ما أتم السنة ودخل في الثانية. وأما عند المالكية : فهو ما أتم السنتين ودخل في الثالثة." & vbNewLine & _
  "# والمسنة : عند الجمهور : هي ما أتمت السنتين ودخلت في الثالثة. وأما عند المالكية : فهي ما أتمت ثلاث سنوات ودخلت في الرابعة."
End If 

الثالث – الغنم :
نصاب الغنم : نصابها محلُ اتفاقٍ بين العلماء ، وهو سهلٌ للغاية ، وإليك التفصيل :
من 1 - 39 لا شيء فيها.
من 40 - 120 فيها شاةٌ.
من 121 - 200 فيها شاتان.
من 201 - 399 فيها 3 شياهٍ.
من 400 - 499 فيها 4 شياهٍ.
من 500 - 599 فيها 5 شياهٍ.
وهكذا ما زاد عن ذلك في كل مائة شاةٍ شاةٌ.
أظن أن أي مبرمجٍ مهما كان مستواه يستطيع كتابة كود زكاة الغنم ، وإليكم كود حساب زكاة الغنم :

PHP كود :
'زكاة الغنم
If Trim(TxtAnimal.Text) < 40 Then
   LblResultAnimal.Caption = "لا يتوجب عليك إخراج شيءٍ ، فالحد الأدنى لنصاب زكاة الغنم هو : 40 شاة"
   TxtExplicationlAnimal.Text = "اتفق جمهور العلماء على أن الحد الأدنى لزكاة الغنم في الشريعة الإسلامية هو 40 شاة وعدد رؤوس أغنامك لم يبلغ ذلك الحد ، لذا لا يتوجب عليك إخراج أي شيءٍ."
   Exit Sub
End If

If TxtAnimal.Text < 121 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : شاة واحدة كزكاة لأغنامك"
   TxtExplicationlAnimal.Text = "اتفق جمهور العلماء على أن رؤوس الأغنام إذا كانت ما بين 40 إلى 120 فتجب فيها شاة واحدة فقط."
ElseIf TxtAnimal.Text >= 121 And TxtAnimal.Text < 201 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : شاتين كزكاة لأغنامك"
   TxtExplicationlAnimal.Text = "اتفق جمهور العلماء على أن رؤوس الأغنام إذا كانت ما بين 121 إلى 200 فتجب فيها شاتان فقط."
ElseIf TxtAnimal.Text >= 201 And TxtAnimal.Text < 400 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : ثلاث شياه كزكاة لأغنامك"
   TxtExplicationlAnimal.Text = "اتفق جمهور العلماء على أن رؤوس الأغنام إذا كانت ما بين 201 إلى 399 فتجب فيها ثلاث شياهٍ فقط."
ElseIf TxtAnimal.Text >= 400 Then
   LblResultAnimal.Caption = "يتوجب عليك إخراج : " & Int(TxtAnimal.Text / 100) & " من رؤوس الغنم كزكاة لأغنامك"
   TxtExplicationlAnimal.Text = "اتفق جمهور العلماء على أن رؤوس الأغنام إذا كانت أكثر من 399 فتجب فيها عندئذٍ عن كل مئة رأسٍ من الغنم شاة واحدة."
End If 


[b]ثانياً : زكاة النقدين (الذهب والفضة) :
النقدان : هما الذهب والفضة.
نصاب الذهب والفضة :
نصاب الذهب : عشرون (20) مثقالاً ، وتساوي (85) غراماً.
نصاب الفضة : مائتي (200) درهمٍ ، وهو ما يعادل (595) غراماً تقريباً.
فإن بلغا النصاب أخذ منهما ربع العشر أي 2.5%.
بداية أريد أن أوضح جزئية هامةً تتعلق بالذهب والفضة ، وهي مسألة عيار الذهب أو عيار الفضة ، فمثلاً للذهب عيارات عدةٌ ، منها : عيار 24 وعيار 21 وعيار 18 وغيرهم. وللفضة كذلك عيارات عدةٌ ، منها عيار 1000 وعيار 950 وعيار 925 وغيرهم.
العيار يقصد به نسبة الذهب أو الفضة الموجودة في القطعة التي تمتلكها ؛ فمثلاً الذهب الذي يعتبر عياره 24 قيراطاً يعتبر ذهباً خالصاً غير مخلوطٍ بشيءٍ ، والذهب الذي عياره 21 قيراطاً لا يعتبر ذهباً خالصاً بل يعتبر في اصطلاح الفقهاء ذهباً مغشوشاً أو مخلوطاً بغيره ؛ لأنه ليس بذهبٍ خالصٍ ، بل هو ذهبٌ مسبوكٌ معه غيره من المعادن كالنحاس والفضة والقصدير.
والعلماء عندما اعتبروا أن نصاب الذهب 85 غراماً قصدوا الذهب الخالص ولم يقصدوا الذهب المخلوط مع غيره ، وما يقال عن الذهب يقال عن الفضة أيضاً ؛ لذا اختلف العلماء في النصاب في المغشوش والمخلوط من الذهب والفضة :
المغشوش من الذهب أو الفضة : هو المسبوك مع غيره ، أي عياره أقل من 24 بالنسبة للذهب ، وأقل من 1000 بالنسبة للفضة.
قال الحنفية : إن كان الغالب على الورق المضروب الفضة فهو في حكم الفضة ، فتجب فيه الزكاة كأنه كله فضةٌ ، ولا تزكى زكاة العُرُوض ، ولو كان قد أعدها للتجارة ، قالوا : لأن الدراهم لا تخلو من قليل الغش ؛ لأنها لا تنطبع إلا به ، والغلبة أن تزيد الفضة على النصف.
أما إن كان الغش غالباً فلا يكون لها حكم الفضة بل حكم العُرُوض ، فلا زكاة فيها إلا إن نواها للتجارة وبلغت نصاباً بالقيمة ، فإن لم ينوها للتجارة فإن كانت بحيث يخلّص منها فضةً تبلغ نصاباً وجبت زكاتها ، وإلا فلا .
وقال المالكية : إن كانت الدراهم والدنانير المغشوشة رائجةً كرواج غير المغشوشة فإنها تعامل مثل الكاملة سواء ، فتكون فيها الزكاة إن بلغ وزنها بما فيها من الغش نصاباً ، وأما إن كانت غير رائجةٍ فالعبرة بما فيها من الذهب أو الفضة الخالصين على تقدير التصفية ، فإن بلغ نصاباً زُكّي وإلا فلا.
وقال الشافعية والحنابلة : لاشيء في المغشوش حتى يبلغ خالصه نصاباً كاملاً ، فمن ملك ذهباً أو فضةً مغشوشةً أو مختلطاً بغيره ، فلا زكاة فيه حتى يبلغ قدر الذهب والفضة نصاباً ، وهذا هو الرأي الراجح والموافق لظاهر النصوص.

باختصارٍ :
الحنفية : ذهبوا إلى أن العيار إن كان يساوي النصف أو أكثر فإنه يعامل معاملة الخالص وإلا على تقدير التصفية.
المالكية : إن كان العيار رائجاً في البلد فيعتبر بمثابة الخالص وإلا على تقدير التصفية.
الشافعية والحنابلة : على تقدير التصفية ، وهو الراجح كما أسلفنا.
وبناءً على ذلك عندما تريد حساب زكاة الذهب أو الفضة فيجب أن تأخذ بعين الاعتبار النقاط الآتية :
1- مقدار الذهب أو الفضة.
2- كم هو عيار الذهب أو الفضة ؟
3- هل العيار الذي اخترته هو العيار الرائج في بلدك أم لا ؟
4- سعر الغرام اليوم إن كنت تريد إخراج القيمة.

قبل أن نكتب الكود ما رأيكم أن نصيغ آراء الفقهاء بطريقةٍ علميّةٍ بحيث يستنتج البرنامج آلياً الحالات التي يتفق فيها العلماء والحالات التي يختلفون فيها ، وعندها سنكون أمام عدة حالاتٍ ، هي :
# وجوب إخراج الزكاة باتفاق جمهور العلماء ، وذلك في حالتين :
الأولى : عندما يكون العيار الذي اختاره الشخص هو 24 أو عيار الفضة 1000 ؛ لأنه في هذه الحالة يكون قد اختار العيار الخالص ولا خلاف هنا.
الثانية : عندما تكون كمية الذهب أو الفضة الموجودة أكبر أو تساوي نصاب عيار الذهب أو الفضة المختار بعد تصفيته ؛ مثلاً هنالك شخصٌ عنده 100 غ من الذهب عيار 21 ، كم هي زكاته ؟ الجواب باتفاق جمهور العلماء تجب عليه الزكاة ومقدارها 2.5 غ ، ولكن كيف باتفاق العلماء ؟ دعوني أوضح لكم :
الحنفية : اعتبروا كل ما هو أكبر أو يساوي العيار 12 يعامل معاملة العيار 24 ونصاب العيار 24 هو 85 غ كما أسلفنا ، إذن الزكاة في الحالة السابقة واجبة عندهم.
المالكية : أيضاً متفقون ؛ لأن العيار إن كان رائجاً فسيعتبر بمثابة العيار 24 ونصابه 85 غ وما يملكه الشخص أكثر من ذلك ، وإن كان العيار غير رائجٍ فعلى تقدير تصفيته يكون نصابه 97.14 غ تقريباً وهو أقل من المقدار الذي يملكه الشخص.
الشافعية والحنابلة : أيضاً متفقون لأن العيار 21 بعد تصفيته سيكون نصابه 97.14 تقريباً وهو أقل من المقدار الذي يملكه الشخص.
ملاحظة : معادلة التصفية هي : 85 / (21 / 24) ؛ حيث 85 هي نصاب الذهب الخالص ، 21 هو العيار الذي اخترناه ، 24 هو عيار الذهب الخالص.

# وجوب إخراج الزكاة باتفاق الحنفية والمالكية فقط ، وذلك في حالةٍ واحدةٍ :
عندما تكون كمية الذهب أكبر من أو تساوي 85 غ أو كمية الفضة أكبر من أو تساوي 595 غ وفي الوقت نفسه تكون أقل من نصاب الذهب أو الفضة بعد التصفية ويكون العيار المختار أكبر أو يساوي 12 ويكون هو العيار الرائج في البلد.
مثلاً : هنالك شخصٌ عنده 90 غ من الذهب عيار 21 وهو العيار الرائج في بلده ، كم هي زكاته ؟
الجواب : زكاته 2.25 غ باتفاق الحنفية والمالكية ، ولا زكاة عليه باتفاق الشافعية والحنابلة ، كيف ذلك ؟
بالنسبة للحنفية : فهم يعتبرون أن عيار الذهب إذا ما كان أكبر من العيار 12 أو يساويه فإنه يعامل عندئذٍ معاملة الذهب الخالص الذي عياره 24 ، فمتى ما وصل الذهب إلى 85 غ فأكثر وجبت فيه الزكاة حسب هذه الحالة.
أما المالكية : فالعبرة عندهم الرواج ، والعيار الذي اخترته هو العيار الرائج في بلدك حسب اختيارك ، وبالتالي تجب فيه الزكاة متى ما كان ما تملكه أكثر من 85 غ من الذهب.
أما عند الشافعية والحنابلة : فيعتبرون هذا العيار الذي اخترته مختلطاً بغيره كونه ليس بذهبٍ خالصٍ ، وبالتالي لا تجب فيه الزكاة حتى تبلغ نسبة الذهب الموجودة في هذا العيار نصاب الزكاة ، وهي حوالي 97.14 غ تقريباً ، وما يملكه الشخص أقل من ذلك لذا لا يتوجب عليك إخراج الزكاة عندهم.

# وجوب إخراج الزكاة حسب رأي الحنفية فقط ، وذلك في حالةٍ واحدةٍ :
عندما تكون كمية الذهب أكبر من أو تساوي 85 غ أو كمية الفضة أكبر من أو تساوي 595 غ وفي الوقت نفسه تكون أقل من نصاب الذهب أو الفضة بعد التصفية ويكون العيار المختار أكبر أو يساوي 12 ولا يكون هو العيار الرائج في البلد.
مثلاً : هنالك شخصٌ عنده 90 غ من الذهب عيار 21 وهذا العيار ليس هو العيار الرائج في بلده ، كم هي زكاته ؟
الجواب : زكاته 2.25 غ حسب رأي الحنفية ، ولا زكاة عليه باتفاق المالكية والشافعية والحنابلة ، كيف ذلك ؟
بالنسبة للحنفية : فهم يعتبرون أن عيار الذهب إذا ما كان أكبر من العيار 12 أو يساويه فإنه يعامل عندئذٍ معاملة الذهب الخالص الذي عياره 24 ، فمتى ما وصل الذهب إلى 85 غ فأكثر وجبت فيه الزكاة حسب هذه الحالة.
أما المالكية والشافعية والحنابلة : فلا يوجبون عليه الزكاة ؛ لأن عياره عند المالكية غير رائج وبعد تصفيته سيكون نصابه 97.14 غ وما يملكه الشخص أقل من النصاب ، وكذلك الحال بالنسبة للشافعية والحنابلة ؛ فبعد تصفيته ستكون الكمية الموجودة عند الشخص أقل من النصاب المتوجب شرعاً وهو 97.14 غ كما أسلفنا.

# وجوب إخراج الزكاة حسب رأي المالكية فقط ، وذلك في حالةٍ واحدةٍ :
عندما تكون كمية الذهب أكبر من أو تساوي 85 غ أو كمية الفضة أكبر من أو تساوي 595 غ وفي الوقت نفسه تكون أقل من نصاب الذهب أو الفضة بعد التصفية ويكون العيار المختار أصغر من 12 ويكون هو العيار الرائج في البلد.
مثلاً : هنالك شخصٌ عنده 90 غ من الذهب عيار 10 وهو العيار الرائج في بلده ، كم هي زكاته ؟
الجواب : زكاته 2.25 غ حسب رأي المالكية ، ولا زكاة عليه باتفاق الحنفية والشافعية والحنابلة ، كيف ذلك ؟
بالنسبة للمالكية : فقد أوجبوا الزكاة في هذه الحالة ؛ لأن العبرة عندهم في عيار الذهب هو الرواج ، فمتى ما راج عيار الذهب اعتبر مثله مثل الذهب الذي عياره 24 ، وبالتالي تجب فيه الزكاة عندما يكون أكثر من 85 غ ، وهذا ينطبق على هذه الحالة.
أما الحنفية والشافعية والحنابلة : فلا يوجبون عليه الزكاة ؛ لأن عياره عند الحنفية أقل من 12 وبعد تصفيته سيكون نصابه 204 غ (معادلة التصفية هي : 85 / (10 / 24) = 204 ) وما يملكه الشخص أقل من النصاب ، وكذلك الحال بالنسبة للشافعية والحنابلة ؛ فبعد تصفيته ستكون الكمية الموجودة عند الشخص أقل من النصاب المتوجب شرعاً وهو 204 غ.

# ما عدا هذه الحالات لا يتوجب عليك إخراج شيءٍ ، وذلك باتفاق الجمهور.
وبعد هذا الشرح المستفيض إليكم كود حساب زكاة الذهب :

[php]
'جميع المذاهب متفقة
If TxtGoldGram.Text >= (85 / (CmbGold.Text / 24)) Then
If Val(CmbGold.Text) = 24 Then
LblResultGold.Caption = LblResultGold & "باتفاق الجمهور (الشافعية والحنابلة والحنفية والمالكية) يتوجب عليك إخراج : " & (TxtGoldGram.Text * (2.5 / 100)) & " غرام من الذهب عيار " & CmbGold.Text
LblPriceGold.Caption = "القيمة بالنقود لما يتوجب عليك إخراجه لذهب عياره " & CmbGold.Text & " هي : " & (TxtGoldGram.Text * (2.5 / 100)) * TxtGoldMoney.Text & " " & LblGoldYourMoney.Caption
TxtExplicationGold.Text = "لا يوجد خلاف بين جمهور العلماء حول نصاب الذهب عيار 24 كونه يعتبر عندهم ذهباً خالصاً غير مخلوطٍ بشيءٍ ، وبالتالي متى ما كان ما تملكه أكثر من 85 غ من الذهب أو يساويه وجبت عليك فيه الزكاة باتفاق العلماء."
Else
LblResultGold.Caption = LblResultGold & "باتفاق الجمهور (الشافعية والحنابلة والحنفية والمالكية) يتوجب عليك إخراج : " & (TxtGoldGram.Text * (2.5 / 100)) & " غرام من الذهب عيار " & CmbGold.Text & " أي ما يعادل " & (TxtGoldGram.Text * (2.5 / 100)) * (CmbGold.Text / 24) & " غ من الذهب الخالص عيار 24"
LblPriceGold.Caption = "القيمة بالنقود لما يتوجب عليك إخراجه لذهب عياره " & CmbGold.Text & " هي : " & (TxtGoldGram.Text * (2.5 / 100)) * TxtGoldMoney.Text & " " & LblGoldYourMoney.Caption & vbNewLine & "أي ما يعادل " & TxtGoldMoney.Text * ((TxtGoldGram.Text * (2.5 / 100)) * (CmbGold.Text / 24)) & " " & LblGoldYourMoney.Caption & " من الذهب الخالص عيار 24"
TxtExplicationGold.Text = "مقدار ما تملكه من الذهب لا يدخل ضمن خلاف الفقهاء حول تقدير نصاب الذهب المعتبر ، وبالتالي يتوجب عليك إخراج الزكاة باتفاق جمهور العلماء."
End If
ElseIf TxtGoldGram.Text >= 85 And TxtGoldGram.Text < (85 / (CmbGold.Text / 24)) And Val(CmbGold.Text) >= 12 Then
'الحنفية فقط
If OptWidespreadGold.Value = False Then
LblResultGold.Caption = "حسب مذهب الحنفية يتوجب عليك إخراج : " & (TxtGoldGram.Text * (2.5 / 100)) & " غرام من الذهب عيار " & CmbGold.Text
LblResultGold.Caption = LblResultGold.Caption & vbNewLine & "أما عند الجمهور (الشافعية والحنابلة والمالكية) فلم يبلغ ذهبك نصاب الزكاة بعد فنصاب الذهب عيار " & CmbGold.Text & " عندهم هو : " & (85 / (CmbGold.Text / 24)) & " غ"
LblPriceGold.Caption = "القيمة بالنقود لما يتوجب عليك إخراجه حسب مذهب الحنفية لذهب عياره " & CmbGold.Text & " هي : " & (TxtGoldGram.Text * (2.5 / 100)) * TxtGoldMoney.Text & " " & LblGoldYourMoney.Caption
TxtExplicationGold.Text = "# بالنسبة للحنفية : فهم يعتبرون أن عيار الذهب إذا ما كان أكبر من العيار 12 أو يساويه فإنه يعامل عندئذٍ معاملة الذهب الخالص الذي عياره 24 ، فمتى ما وصل الذهب إلى 85 غ فأكثر وجبت فيه الزكا...
فاعلم أنه لا إله إلا الله
الرد }}}
تم الشكر بواسطة:
#2
المصدر :
كود :
http://shhada.net/articles.php?action=show&id=16
http://shhada.net/articles.php?action=show&id=17
فاعلم أنه لا إله إلا الله
الرد }}}
تم الشكر بواسطة:
#3
شكرا جزيلا

أين أنت من At4re صار لك أكثر من سنتين ما دخلت ...

شكرا لك أنت فعلا أستاذ و كنت بدايتي في الهندسة العكسية و البرمجة شكرا لك يا أستاذي
منقطع .. للدراسة Confused
الرد }}}
تم الشكر بواسطة:
#4
mamas1 كتب :شكرا جزيلا

أين أنت من At4re صار لك أكثر من سنتين ما دخلت ...

شكرا لك أنت فعلا أستاذ و كنت بدايتي في الهندسة العكسية و البرمجة شكرا لك يا أستاذي
[COLOR="#0000CD"]السلام عليكم ورحمة الله وبركاته
كنت متغيباً بسبب ظروف البلد ومرض والدي شافاه الله
شاكر مرورك الكريم
[/COLOR]
فاعلم أنه لا إله إلا الله
الرد }}}
تم الشكر بواسطة:



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


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