delphi4arab منتديات دلفي للعرب
فيما يتعلق بالضريبة على الدخل حسب ما جاء في قانون المالية التكميلي - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : فيما يتعلق بالضريبة على الدخل حسب ما جاء في قانون المالية التكميلي (/showthread.php?tid=10879)

الصفحات: 1 2 3


فيما يتعلق بالضريبة على الدخل حسب ما جاء في قانون المالية التكميلي - medreg - 06-06-2020

السلام عليكم ورحمة الله تعالى وبركاته
احتاج الى التعديل على هذا الكود المتعلق بالضريبة على الدخل الإجمالي لسنة 2008
حسب ما جاء بقانون المالية التكميلي لسنة 2020
كود :
Function IRG2008(soumis:Real) : real; var   TRS  : array [0..5] of Real;   Tax  : array [0..5] of Real;   Impan : array [0..5] of Real;   brts,taux,tb,n,td,impota,impm,abat,ret,RTS1 :real;   ill :integer; begin soumis := (Int(soumis / 10)) * 10; TRS[1] := 0; TRS[2] := 120000; TRS[3] := 360000; TRS[4] := 1440000; TRS[5] := 9999999; Tax[1] := 0; Tax[2] := 0; Tax[3] := 20; Tax[4] := 30; Tax[5] := 35; Impan[1] := 0; Impan[2] := 0; Impan[3] := 48000; Impan[4] := 372000; Impan[5] := 3367999.65; brts := soumis * 12; ill := 1; While (ill <= 5) and (brts >TRS[ill]) do ill := ill + 1; taux := Tax[ill]; ill := ill - 1; tb := TRS[ill]; td := Impan[ill]; n := brts - tb; impota := (n * taux / 100) + td; impm := impota / 12; abat := (40 * impm / 100); If abat < 1000 Then abat := 1000; If abat > 1500 Then abat := 1500; ret := impm - abat; If ret < 0 Then ret := 0; RTS1 := (ret * 10); RTS1 := Int(RTS1); RTS1 := RTS1 / 10; IRG2008 := RTS1; end;
حسب المادة 9 من قانون المالية التكميلي 2020
والتي تنص على مايلي
تحسب الضريبة على الدخل الإجمالي وفقا للجدول التصاعدي .............(بدون تغيير حتى) أي ما بين 1000و 1500 دج/شهريا)
تستفيد المداخيل التي لاتتعدى مبلغ 30000دج من اعفاء كامل من الضريبة على الدخل الإجمالي.
تستفيد المداخيل التي تفوق مبلغ 30000 دج وتقل عن 35000 دج من تخفيض إضافي ويتم تحديد الضريبة على الدخل الإجمالي المستحقة بالنسبة لهذه الفئة من الدخل وفقا للصيغة الآتية :
- الضريبة على الدخل الإجمالي = الضريبة على الدخل الإجمالي (وفقا للتخفيض الأول) *(3/8) - (20000/3).
وعلاوة على ذلك تستفيد المداخيل التي تفوق 30000 دج وتقل عن 40000 دج التي يتقاضاها العمال المعوقين من تخفيض اضافي على مبلغ الضريبة على الدخل الإجمالي، على ألا يتراكم مع التخفيض الثاني المشار اليه أعلاه.
يتم تحديد الضريبة على الدخل الإجمالي بالنسبة الى هذه الفئة من الجدول، وفقا للصيغ الآتية :
- الضريبة على الدخل الإجمالي = الضريبة على الدخل الإجمالي (وفقا للتخفيض الأول) *(3/5) - (12500/3).

جزاكم الله عنا كل خير


RE: فيما يتعلق بالضريبة على الدخل حسب ما جاء في قانون المالية التكميلي - larbiparadox - 07-06-2020

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

بالنسبة لـ أكثر من 30.000 و أقل أو يساوي 35.000

كود :
Function IRG2008(soumis:Real) : real; var   TRS  : array [0..5] of Real;   Tax  : array [0..5] of Real;   Impan : array [0..5] of Real;   brts,taux,tb,n,td,impota,impm,abat,ret,RTS1 :real;   ill :integer; begin if  soumis > 30000 then begin soumis := (Int(soumis / 10)) * 10; TRS[1] := 0; TRS[2] := 120000; TRS[3] := 360000; TRS[4] := 1440000; TRS[5] := 9999999; Tax[1] := 0; Tax[2] := 0; Tax[3] := 20; Tax[4] := 30; Tax[5] := 35; Impan[1] := 0; Impan[2] := 0; Impan[3] := 48000; Impan[4] := 372000; Impan[5] := 3367999.65; brts := soumis * 12; ill := 1; While (ill <= 5) and (brts >TRS[ill]) do ill := ill + 1; taux := Tax[ill]; ill := ill - 1; tb := TRS[ill]; td := Impan[ill]; n := brts - tb; impota := (n * taux / 100) + td; impm := impota / 12; abat := (40 * impm / 100); If abat < 1000 Then abat := 1000; If abat > 1500 Then abat := 1500; ret := impm - abat; If ret < 0 Then ret := 0; RTS1 := (ret * 10); RTS1 := Int(RTS1); RTS1 := RTS1 / 10; IRG2008 := RTS1; end else  begin IRG2008 := 0; end; if  (soumis > 30000) and (soumis <= 35000) then begin IRG2008 :=  ( (RTS1* 8)  /3 ) - (20000 /3)  ; end;

مثال : مثال مبلغ خاضع لضريبة 30.500 سابقا كان يخصم منه 2.650 أما الأن صيخصم منه 400 فقط

كصورة التالية
[صورة: 600123590.png]


أما ذوي الاحتياجات الخاصة

كود :
Function IRG2008(soumis:Real) : real; var   TRS  : array [0..5] of Real;   Tax  : array [0..5] of Real;   Impan : array [0..5] of Real;   brts,taux,tb,n,td,impota,impm,abat,ret,RTS1 :real;   ill :integer; begin if  soumis > 30000 then begin soumis := (Int(soumis / 10)) * 10; TRS[1] := 0; TRS[2] := 120000; TRS[3] := 360000; TRS[4] := 1440000; TRS[5] := 9999999; Tax[1] := 0; Tax[2] := 0; Tax[3] := 20; Tax[4] := 30; Tax[5] := 35; Impan[1] := 0; Impan[2] := 0; Impan[3] := 48000; Impan[4] := 372000; Impan[5] := 3367999.65; brts := soumis * 12; ill := 1; While (ill <= 5) and (brts >TRS[ill]) do ill := ill + 1; taux := Tax[ill]; ill := ill - 1; tb := TRS[ill]; td := Impan[ill]; n := brts - tb; impota := (n * taux / 100) + td; impm := impota / 12; abat := (40 * impm / 100); If abat < 1000 Then abat := 1000; If abat > 1500 Then abat := 1500; ret := impm - abat; If ret < 0 Then ret := 0; RTS1 := (ret * 10); RTS1 := Int(RTS1); RTS1 := RTS1 / 10; IRG2008 := RTS1; end else  begin IRG2008 := 0; end; if  (soumis > 30000) and (soumis <= 40000) then begin // if  (soumis > 30000) and (soumis <= 35000) then begin //IRG2008 :=  ( (RTS1* 8)  /3 ) - (20000 /3)  ; IRG2008 :=  ( (RTS1* 5)  /3 ) - (12500 /3)  ; end; end;



RE: فيما يتعلق بالضريبة على الدخل حسب ما جاء في قانون المالية التكميلي - ALG2009 - 07-06-2020

وعليكم السلام

هل جربتم
كود :
irg= ( المبلغ الخاضع للضريبة - 000 30 ) × 80 %

كود :
function IRG (soumis:Real) :string; begin   result:=FloatToStr((soumis-30000)*0.8); end;



RE: فيما يتعلق بالضريبة على الدخل حسب ما جاء في قانون المالية التكميلي - medreg - 08-06-2020

بارك الله فيك اخي العربي هذا هو المطلوب جزاكم الله عنا كل خير
(07-06-2020, 12:31 AM)larbiparadox كتب : وعليك السلام و رحمة الله و بركاته

بالنسبة لـ أكثر من 30.000 و أقل أو يساوي 35.000

كود :
Function IRG2008(soumis:Real) : real; var   TRS  : array [0..5] of Real;   Tax  : array [0..5] of Real;   Impan : array [0..5] of Real;   brts,taux,tb,n,td,impota,impm,abat,ret,RTS1 :real;   ill :integer; begin if  soumis > 30000 then begin soumis := (Int(soumis / 10)) * 10; TRS[1] := 0; TRS[2] := 120000; TRS[3] := 360000; TRS[4] := 1440000; TRS[5] := 9999999; Tax[1] := 0; Tax[2] := 0; Tax[3] := 20; Tax[4] := 30; Tax[5] := 35; Impan[1] := 0; Impan[2] := 0; Impan[3] := 48000; Impan[4] := 372000; Impan[5] := 3367999.65; brts := soumis * 12; ill := 1; While (ill <= 5) and (brts >TRS[ill]) do ill := ill + 1; taux := Tax[ill]; ill := ill - 1; tb := TRS[ill]; td := Impan[ill]; n := brts - tb; impota := (n * taux / 100) + td; impm := impota / 12; abat := (40 * impm / 100); If abat < 1000 Then abat := 1000; If abat > 1500 Then abat := 1500; ret := impm - abat; If ret < 0 Then ret := 0; RTS1 := (ret * 10); RTS1 := Int(RTS1); RTS1 := RTS1 / 10; IRG2008 := RTS1; end else  begin IRG2008 := 0; end; if  (soumis > 30000) and (soumis <= 35000) then begin IRG2008 :=  ( (RTS1* 8)  /3 ) - (20000 /3)  ; end;

مثال : مثال مبلغ خاضع لضريبة 30.500 سابقا كان يخصم منه 2.650 أما الأن صيخصم منه 400 فقط

كصورة التالية
[صورة: 600123590.png]


أما ذوي الاحتياجات الخاصة

كود :
Function IRG2008(soumis:Real) : real; var   TRS  : array [0..5] of Real;   Tax  : array [0..5] of Real;   Impan : array [0..5] of Real;   brts,taux,tb,n,td,impota,impm,abat,ret,RTS1 :real;   ill :integer; begin if  soumis > 30000 then begin soumis := (Int(soumis / 10)) * 10; TRS[1] := 0; TRS[2] := 120000; TRS[3] := 360000; TRS[4] := 1440000; TRS[5] := 9999999; Tax[1] := 0; Tax[2] := 0; Tax[3] := 20; Tax[4] := 30; Tax[5] := 35; Impan[1] := 0; Impan[2] := 0; Impan[3] := 48000; Impan[4] := 372000; Impan[5] := 3367999.65; brts := soumis * 12; ill := 1; While (ill <= 5) and (brts >TRS[ill]) do ill := ill + 1; taux := Tax[ill]; ill := ill - 1; tb := TRS[ill]; td := Impan[ill]; n := brts - tb; impota := (n * taux / 100) + td; impm := impota / 12; abat := (40 * impm / 100); If abat < 1000 Then abat := 1000; If abat > 1500 Then abat := 1500; ret := impm - abat; If ret < 0 Then ret := 0; RTS1 := (ret * 10); RTS1 := Int(RTS1); RTS1 := RTS1 / 10; IRG2008 := RTS1; end else  begin IRG2008 := 0; end; if  (soumis > 30000) and (soumis <= 40000) then begin // if  (soumis > 30000) and (soumis <= 35000) then begin //IRG2008 :=  ( (RTS1* 8)  /3 ) - (20000 /3)  ; IRG2008 :=  ( (RTS1* 5)  /3 ) - (12500 /3)  ; end; end;

(07-06-2020, 06:54 PM)ALG2009 كتب : وعليكم السلام

هل جربتم
كود :
irg= ( المبلغ الخاضع للضريبة - 000 30 ) × 80 %

كود :
function IRG (soumis:Real) :string; begin   result:=FloatToStr((soumis-30000)*0.8); end;

شكرا اخي ALG2009 على المرور
بارك الله فيك انت ايضا وفي جميع اعضاء المنتدى الغالي


RE: فيما يتعلق بالضريبة على الدخل حسب ما جاء في قانون المالية التكميلي - ghostdz - 08-06-2020

(07-06-2020, 06:54 PM)ALG2009 كتب : وعليكم السلام

هل جربتم
كود :
irg= ( المبلغ الخاضع للضريبة - 000 30 ) × 80 %

كود :
function IRG (soumis:Real) :string; begin   result:=FloatToStr((soumis-30000)*0.8); end;

السلام عليكم

رياضيا الدالة التي وضعتها لا يمكن أن تساوي الدالة الأصلية لحساب IRG


RE: فيما يتعلق بالضريبة على الدخل حسب ما جاء في قانون المالية التكميلي - ALG2009 - 08-06-2020

(08-06-2020, 09:14 AM)ghostdz كتب : السلام عليكم
رياضيا الدالة التي وضعتها لا يمكن أن تساوي الدالة الأصلية لحساب IRG

وعليكم السلام

ولكن تحسب الضريبة على الدخل الجديد بين 30010 و35000 أي تفي بالغرض وإذا أردت حساب الضريبة الخاصة بالمعوقين والمتعاقدين نفس الدالة غير فقط 0.8 بـ 0.5

في النتيجة تساوي الدالة الأصلية

لحساب الضريبة أقل أو تساوي أو أكثر

كود :
function IRG (soumis:Real) :string; begin   if soumis <=30000 then     result:='0' else     if  (soumis > 30000) and (soumis <= 35000)  then     result:=FloatToStr((soumis-30000)*0.8)   else  // وضع كود حساب الضريبة 2008 end;



RE: فيما يتعلق بالضريبة على الدخل حسب ما جاء في قانون المالية التكميلي - ghostdz - 16-06-2020

(07-06-2020, 12:31 AM)larbiparadox كتب : وعليك السلام و رحمة الله و بركاته

بالنسبة لـ أكثر من 30.000 و أقل أو يساوي 35.000

كود :
Function IRG2008(soumis:Real) : real; var    TRS   : array [0..5] of Real;    Tax   : array [0..5] of Real;    Impan : array [0..5] of Real;    brts,taux,tb,n,td,impota,impm,abat,ret,RTS1 :real;    ill :integer; begin if  soumis > 30000 then begin soumis := (Int(soumis / 10)) * 10; TRS[1] := 0; TRS[2] := 120000; TRS[3] := 360000; TRS[4] := 1440000; TRS[5] := 9999999; Tax[1] := 0; Tax[2] := 0; Tax[3] := 20; Tax[4] := 30; Tax[5] := 35; Impan[1] := 0; Impan[2] := 0; Impan[3] := 48000; Impan[4] := 372000; Impan[5] := 3367999.65; brts := soumis * 12; ill := 1; While (ill <= 5) and (brts >TRS[ill]) do ill := ill + 1; taux := Tax[ill]; ill := ill - 1; tb := TRS[ill]; td := Impan[ill]; n := brts - tb; impota := (n * taux / 100) + td; impm := impota / 12; abat := (40 * impm / 100); If abat < 1000 Then abat := 1000; If abat > 1500 Then abat := 1500; ret := impm - abat; If ret < 0 Then ret := 0; RTS1 := (ret * 10); RTS1 := Int(RTS1); RTS1 := RTS1 / 10; IRG2008 := RTS1; end else  begin IRG2008 := 0; end; if  (soumis > 30000) and (soumis <= 35000) then begin IRG2008 :=  ( (RTS1* 8)  /3 ) - (20000 /3)   ; end;

مثال : مثال مبلغ خاضع لضريبة 30.500 سابقا كان يخصم منه 2.650 أما الأن صيخصم منه 400 فقط

كصورة التالية
[صورة: 600123590.png]


أما ذوي الاحتياجات الخاصة

كود :
Function IRG2008(soumis:Real) : real; var    TRS   : array [0..5] of Real;    Tax   : array [0..5] of Real;    Impan : array [0..5] of Real;    brts,taux,tb,n,td,impota,impm,abat,ret,RTS1 :real;    ill :integer; begin if  soumis > 30000 then begin soumis := (Int(soumis / 10)) * 10; TRS[1] := 0; TRS[2] := 120000; TRS[3] := 360000; TRS[4] := 1440000; TRS[5] := 9999999; Tax[1] := 0; Tax[2] := 0; Tax[3] := 20; Tax[4] := 30; Tax[5] := 35; Impan[1] := 0; Impan[2] := 0; Impan[3] := 48000; Impan[4] := 372000; Impan[5] := 3367999.65; brts := soumis * 12; ill := 1; While (ill <= 5) and (brts >TRS[ill]) do ill := ill + 1; taux := Tax[ill]; ill := ill - 1; tb := TRS[ill]; td := Impan[ill]; n := brts - tb; impota := (n * taux / 100) + td; impm := impota / 12; abat := (40 * impm / 100); If abat < 1000 Then abat := 1000; If abat > 1500 Then abat := 1500; ret := impm - abat; If ret < 0 Then ret := 0; RTS1 := (ret * 10); RTS1 := Int(RTS1); RTS1 := RTS1 / 10; IRG2008 := RTS1; end else  begin IRG2008 := 0; end; if  (soumis > 30000) and (soumis <= 40000) then begin // if  (soumis > 30000) and (soumis <= 35000) then begin //IRG2008 :=  ( (RTS1* 8)  /3 ) - (20000 /3)   ; IRG2008 :=  ( (RTS1* 5)  /3 ) - (12500 /3)   ; end; end;

السلام عليكم
يوجد خطأ بسيط في الخوارزمية السابقة حيث بعد تجريب الكود في حالة القيمة بين 30001 و 30009 تكون النتيجة خاطئة وهذا بسبب أن المتغير soumis قد تم تغيير قيمته الأصلية
إليكم الكود بعد التعديل
كود :
Function IRG2008(soumis:Real) : real; var    TRS   : array [0..5] of Real;    Tax   : array [0..5] of Real;    Impan : array [0..5] of Real;    brts,taux,tb,n,td,impota,impm,abat,ret,RTS1, Imposable :real;    ill :integer; begin Imposable := soumis; if  soumis > 30000 then begin soumis := (Int(soumis / 10)) * 10; TRS[1] := 0; TRS[2] := 120000; TRS[3] := 360000; TRS[4] := 1440000; TRS[5] := 9999999; Tax[1] := 0; Tax[2] := 0; Tax[3] := 20; Tax[4] := 30; Tax[5] := 35; Impan[1] := 0; Impan[2] := 0; Impan[3] := 48000; Impan[4] := 372000; Impan[5] := 3367999.65; brts := soumis * 12; ill := 1; While (ill <= 5) and (brts >TRS[ill]) do ill := ill + 1; taux := Tax[ill]; ill := ill - 1; tb := TRS[ill]; td := Impan[ill]; n := brts - tb; impota := (n * taux / 100) + td; impm := impota / 12; abat := (40 * impm / 100); If abat < 1000 Then abat := 1000; If abat > 1500 Then abat := 1500; ret := impm - abat; If ret < 0 Then ret := 0; RTS1 := (ret * 10); RTS1 := Int(RTS1); RTS1 := RTS1 / 10; IRG2008 := RTS1; end else  begin IRG2008 := 0; end; if  (Imposable > 30000) and (Imposable <= 35000) then begin IRG2008 :=  ( (RTS1* 8)  /3 ) - (20000 /3)   ; end; end;



RE: فيما يتعلق بالضريبة على الدخل حسب ما جاء في قانون المالية التكميلي - medreg - 16-06-2020

مرحبا اخي والله لم افهم قصدك
بعد الإطلاع على التغيير الذي تفضلت به
لم ارى اي تغيير على الكود
واذا كنت تقصد بالتغيير اضافتك للمتغير Imposable
و
Imposable := Soumis
فهنا اتساءل ما الفرق بين

if  (soumis > 30000) and (soumis <= 35000)
و
if  (Imposable > 30000) and (Imposable <= 35000)
اذا كان soumis هو نفسه imposable
او imposable هو نفسه soumis
ارجو التوضيح حتى نفهم اكثر
لأنه في نظري لا ارى اي تغيير وهذ حسب تحليلي المتواضع علما انني لست خبير لا في مجال البرمجة ولا في مجال المحاسبة
بل لازلت اطمع في الزيادة
اللهم علمنا ما ينفعنا وانفعنا بما علمتنا يا رب العالمين (امين)
يا اخي لا تعتبر ان تدخلي هذا تغليط او شيء من هذا القبيل لا والله كل ما اقصده التوضيح لما تفضلت به فعلا نريد ان نعرف ما الفرق فقط لا اكثر ولا اقل
وبالتوفيق اخي الفاضل

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


RE: فيما يتعلق بالضريبة على الدخل حسب ما جاء في قانون المالية التكميلي - ghostdz - 17-06-2020

(16-06-2020, 07:51 PM)medreg كتب : مرحبا اخي والله لم افهم قصدك
بعد الإطلاع على التغيير الذي تفضلت به
لم ارى اي تغيير على الكود
واذا كنت تقصد بالتغيير اضافتك للمتغير Imposable
و
Imposable := Soumis
فهنا اتساءل ما الفرق بين

if  (soumis > 30000) and (soumis <= 35000)
و
if  (Imposable > 30000) and (Imposable <= 35000)
اذا كان soumis هو نفسه imposable
او imposable هو نفسه soumis
ارجو التوضيح حتى نفهم اكثر
لأنه في نظري لا ارى اي تغيير وهذ حسب تحليلي المتواضع علما انني لست خبير لا في مجال البرمجة ولا في مجال المحاسبة
بل لازلت اطمع في الزيادة
اللهم علمنا ما ينفعنا وانفعنا بما علمتنا يا رب العالمين (امين)
يا اخي لا تعتبر ان تدخلي هذا تغليط او شيء من هذا القبيل لا والله كل ما اقصده التوضيح لما تفضلت به فعلا نريد ان نعرف ما الفرق فقط لا اكثر ولا اقل
وبالتوفيق اخي الفاضل

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

إذا جربت الكود الأصلي بالقيم 30001 حتى 30009 تعطيك النتيجة 2500 وهي الحالات الوحيدة التي فيها الخطأ أما الباقي فلا 
والسبب هو أننا نقوم بتغيير قيمة soumis  في التعليمةالتالية soumis := int(soumis/10)*10 حيث تقوم بجعل رقم الأحاد يساوي الصفر 
ولهذا السبب أقوم بحفظ قيمة soumis في المتغير imposable لإسخدامها في المقارنة  if (soumis >30000) and (soumis <= 35000) then

لأنه لو أخذنا مثلا القيمة 30005 فهي أكبر من 30000 ولكن قيمة المتغير soumis تغيرت وأصبحت 30000 فإن الشرط لا يتحقق ولا يقوم بالتخفيظ فتكون النتيجة المعطاة هي 2500 بدلا عن 0


RE: فيما يتعلق بالضريبة على الدخل حسب ما جاء في قانون المالية التكميلي - medreg - 17-06-2020

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