![]() |
|
فيما يتعلق بالضريبة على الدخل حسب ما جاء في قانون المالية التكميلي - نسخة قابلة للطباعة +- 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) |
فيما يتعلق بالضريبة على الدخل حسب ما جاء في قانون المالية التكميلي - 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;والتي تنص على مايلي تحسب الضريبة على الدخل الإجمالي وفقا للجدول التصاعدي .............(بدون تغيير حتى) أي ما بين 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 فقط كصورة التالية ![]() أما ذوي الاحتياجات الخاصة كود : 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 كتب : وعليك السلام و رحمة الله و بركاته (07-06-2020, 06:54 PM)ALG2009 كتب : وعليكم السلام شكرا اخي ALG2009 على المرور بارك الله فيك انت ايضا وفي جميع اعضاء المنتدى الغالي RE: فيما يتعلق بالضريبة على الدخل حسب ما جاء في قانون المالية التكميلي - ghostdz - 08-06-2020 (07-06-2020, 06:54 PM)ALG2009 كتب : وعليكم السلام السلام عليكم رياضيا الدالة التي وضعتها لا يمكن أن تساوي الدالة الأصلية لحساب IRG RE: فيما يتعلق بالضريبة على الدخل حسب ما جاء في قانون المالية التكميلي - ALG2009 - 08-06-2020 (08-06-2020, 09:14 AM)ghostdz كتب : السلام عليكم وعليكم السلام ولكن تحسب الضريبة على الدخل الجديد بين 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 كتب : وعليك السلام و رحمة الله و بركاته السلام عليكم يوجد خطأ بسيط في الخوارزمية السابقة حيث بعد تجريب الكود في حالة القيمة بين 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 كتب : مرحبا اخي والله لم افهم قصدك إذا جربت الكود الأصلي بالقيم 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 تختفي الأجزاء الناجمة عن عملية النسبة الحسابية شكرا جزيلا اللهم زدنا علما ان لم اتدخل ربما الكثير من الأعضاء لم ينتبه جزاكم الله عنا كل خير |