كيف ترجمة هذا الماكرو الى الديلفي
#1
كيف ترجمة هذا الماكرو الى الديلفي
كود :
Function IRG(SOUMIS)     Dim BRTS, TAX, TB, IMPAN, IMPOTA, IMPM, ABAT, RET, RTS1, ABAT1 As Single         SOUMIS = SOUMIS / 10         SOUMIS = Fix(SOUMIS)         SOUMIS = SOUMIS * 10                 BRTS = SOUMIS * 12         If BRTS >= 0 And BRTS < 120000 Then             TAX = 0             IMPAN = 0             TB = 0         ElseIf BRTS >= 120000 And BRTS < 360000 Then             TAX = 20             IMPAN = 0             TB = 120000         ElseIf BRTS >= 360000 And BRTS < 1440000 Then             TAX = 30             IMPAN = 48000             TB = 360000         ElseIf BRTS >= 1440000 And BRTS < 9999999 Then             TAX = 35             IMPAN = 372000             TB = 1440000         ElseIf BRTS >= 9999999 Then             TAX = 0             IMPAN = 3367999.65             TB = 9999999         End If         IMPOTA = ((BRTS - TB) * TAX / 100) + IMPAN         IMPM = IMPOTA / 12         ABAT = ((40 * IMPM) / 100)         ABAT1 = ABAT         If ABAT < 1000 Then             ABAT = 1000         ElseIf ABAT > 1500 Then             ABAT = 1500         ElseIf ABAT >= 1000 And ABAT <= 1500 Then             ABAT = ABAT         End If         RET = IMPM - ABAT         If RET < 0 Then             RET = 0         ElseIf RET >= 0 Then             RET = RET         End If IRG = RET End Function Sub CalculeIRG() End Sub
الرد
#2
اشكر كل من اطلع على الكود و لم يرد
البرنامج عبارة عن قيمية الضريبة على الدخل في الاجر - الجزائر -
لقد وجدت الحل
------------------------------------------------------------------------------
function IRG(SOUMIS: Single): Single;
var
BRTS, TAX, TB, IMPAN, IMPOTA, IMPM, ABAT, RET: Single;
begin
SOUMIS := SOUMIS / 10;
SOUMIS := Sign(SOUMIS) * Int(Abs(SOUMIS));
SOUMIS := SOUMIS * 10;
BRTS := SOUMIS * 12;
if (BRTS >= 0) and (BRTS < 120000) then
begin
TAX := 0;
IMPAN := 0;
TB := 0;
end
else
if (BRTS >= 120000) and (BRTS < 360000) then
begin
TAX := 20;
IMPAN := 0;
TB := 120000;
end
else
if (BRTS >= 360000) and (BRTS < 1440000) then
begin
TAX := 30;
IMPAN := 48000;
TB := 360000;
end
else
if (BRTS >= 1440000) and (BRTS < 9999999) then
begin
TAX := 35;
IMPAN := 372000;
TB := 1440000;
end
else
begin
TAX := 0;
IMPAN := 3367999.65;
TB := 9999999;
end;
IMPOTA := ((BRTS - TB) * TAX / 100) + IMPAN;
IMPM := IMPOTA / 12;
ABAT := ((40 * IMPM) / 100);
if ABAT < 1000 then
ABAT := 1000
else
if ABAT > 1500 then
ABAT := 1500;
RET := IMPM - ABAT;
if RET < 0 then
RET := 0;
Result := RET;
end;
الرد
#3
السلام عليكم - رمضان كريم

تأكد من السطر رفم 6
(Sign(SOUMIS
 

كود :
SOUMIS := Sign(SOUMIS) * Int(Abs(SOUMIS));
الفاشلون نوعان : الأول : فكر ولم يفعل .. والآخر: فعل ولم يفكر
الرد
#4
قمت بتجربته و الدالة تعمل 10/10 تقوم باضاعة المكتبة Uses Math
[-] كل من 1 user says قال شكرا ل bouh25 على المشاركة المفيدة
  • wadoud
الرد


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


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