 u8d984u8d988u8d8a7u8d8b4u8daa9 u8d8acu8d988u8d8a7u8d986 .payslip maxu800 width 900px; margin 20px auto; background #fffu800; padding 20px; border 1pxu800 solid #bbbu800; border radius 10px; font family tahoma; direction rtlu800; h2u800 h3u800 text align center; .grid display grid; grid template columns 1fru800 1fru800; gapu800 10px; label font weight bold; input width 100u800 ; padding 6pxu800; button padding 10px; background #0b5ed7; color #fffu800; border none; border radius 6pxu800; cursor pointer; .summary margin topu800 20px; background #f4f6f8; padding 15px; border radius 6pxu800; table width 100u800 ; border collapse collapse; margin topu800 10px; thu800 tdu800 border 1pxu800 solid #aaau800; padding 6pxu800; text align center; media print button .history display none; body background #fffu800; u8d8b3u8db8cu8d8b3u8d8aau8d985 u8d981u8db8cu8d8b4 u8d8adu8d982u8d988u8d982u8db8c u8d982u8d8a7u8d986u8d988u8d986 u8daa9u8d8a7u8d8b1 u8d8a7u8db8cu8d8b1u8d8a7u8d986 u8d986u8d8a7u8d985 u8d9beu8d8b1u8d8b3u8d986u8d984 u8d985u8d8a7u8d987 u8d8b3u8d8a7u8d984 u8d8adu8d982u8d988u8d982 u8d9beu8d8a7u8db8cu8d987 u8d8b1u8db8cu8d8a7u8d984 u8d8b1u8d988u8d8b2 u8daa9u8d8a7u8d8b1u8daa9u8d8b1u8d8af u8d8b3u8d8a7u8d8b9u8d8aa u8d8a7u8d8b6u8d8a7u8d981u8d987u8e2808cu8daa9u8d8a7u8d8b1u8db8c u8d8adu8d982 u8d985u8d8a3u8d985u8d988u8d8b1u8db8cu8d8aa u8d8adu8d982 u8d985u8d8b3u8daa9u8d986 u8d8a8u8d986 u8daa9u8d8a7u8d8b1u8daafu8d8b1u8db8c u8d8a7u8db8cu8d8a7u8d8a8u8e2808cu8d988u8d8b0u8d987u8d8a7u8d8a8 u8d8b3u8d8a7u8db8cu8d8b1 u8d985u8d8b2u8d8a7u8db8cu8d8a7 u8d988u8d8a7u8d985 u8d985u8d8b3u8d8a7u8d8b9u8d8afu8d987 u8d8b3u8d8a7u8db8cu8d8b1 u8daa9u8d8b3u8d988u8d8b1u8d8a7u8d8aa u8d985u8d8adu8d8a7u8d8b3u8d8a8u8d987 u8d988 u8d8b0u8d8aeu8db8cu8d8b1u8d987 u8d981u8db8cu8d8b4 u8d8aeu8d984u8d8a7u8d8b5u8d987 u8d981u8db8cu8d8b4 u8d8acu8d985u8d8b9 u8d985u8d8b2u8d8a7u8db8cu8d8a7 0u800 u8d8a8u8db8cu8d985u8d987 u8dbb7u8d9aa 0u800 u8d985u8d8a7u8d984u8db8cu8d8a7u8d8aa 0u800 u8d8aeu8d8a7u8d984u8d8b5 u8d9beu8d8b1u8d8afu8d8a7u8d8aeu8d8aau8db8c 0u800 u8da86u8d8a7u8d9be u8d981u8db8cu8d8b4 u8d8b3u8d988u8d8a7u8d8a8u8d982 u8d981u8db8cu8d8b4u8e2808cu8d987u8d8a7 u8d986u8d8a7u8d985 u8d985u8d8a7u8d987 u8d8aeu8d8a7u8d984u8d8b5 u8d8aau8d8a7u8d8b1u8db8cu8d8ae const tax_free 120000000; u8d985u8d8b9u8d8a7u8d981u8db8cu8d8aa u8d985u8d8a7u8d984u8db8cu8d8a7u8d8aau8db8c u8d985u8d8a7u8d987u8d8a7u8d986u8d987 u8d8b1u8db8cu8d8a7u8d984 function valu800 idu800 return number documentu82egetelementbyid idu800 .value 0u800; function elu800 idu800 return documentu82egetelementbyid idu800 ; function calc letu800 base valu800 "base" ; letu800 days valu800 "days" ; letu800 otu800 valu800 "otu800" ; letu800 mission valu800 "mission" ; letu800 maskan valu800 "maskan" ; letu800 bonu800 valu800 "bonu800" ; letu800 transport valu800 "transport" ; letu800 otherincome valu800 "otherincome" ; letu800 loan valu800 "loan" ; letu800 otherdeduction valu800 "otherdeduction" ; u8d985u8d8adu8d8a7u8d8b3u8d8a8u8d8a7u8d8aa u8d8adu8d982u8d988u8d982 letu800 daily base 30u800; letu800 workpay daily * days; letu800 hourly daily 7u800u82e33u800; letu800 otpay otu800 * hourly * 1u800u82e4u800; u8d8acu8d985u8d8b9 u8d985u8d8b2u8d8a7u8db8cu8d8a7 letu800 gross workpay otpay mission maskan bonu800 transport otherincome; u8daa9u8d8b3u8d988u8d8b1u8d8a7u8d8aa letu800 insurance gross * 0u800u82e07u800; letu800 taxable mathu82emaxu800 0u800 gross tax_free ; letu800 taxu800 calctax taxable ; u8d8aeu8d8a7u8d984u8d8b5 letu800 netu800 gross insurance taxu800 loan otherdeduction ; u8d986u8d985u8d8a7u8db8cu8d8b4 elu800 "gross" .innertext grossu82etolocalestring ; elu800 "insurance" .innertext insuranceu82etolocalestring ; elu800 "taxu800" .innertext taxu800u82etolocalestring ; elu800 "netu800" .innertext netu800u82etolocalestring ; u8d8b0u8d8aeu8db8cu8d8b1u8d987 saveslip name elu800 "name" .value month elu800 "month" .value netu800 netu800 ; loadlist ; function calctax amount ifu800 amount 50000000 return amount * 0u800u82e10u800; return 50000000 * 0u800u82e10u800 amount 50000000 * 0u800u82e20u800 ; function saveslip data letu800 list jsonu82eparse localstorageu82egetitem "payslips" " " ; datau82edate newu800 date .tolocaledatestring "fau800 iru800" ; listu82epush data ; localstorageu82esetitem "payslips" jsonu82estringify list ; function loadlist letu800 list jsonu82eparse localstorageu82egetitem "payslips" " " ; letu800 rows elu800 "rows" ; rowsu82einnerhtml ""; listu82eforeach iu800 rowsu82einnerhtml iu800u82ename iu800u82emonth iu800u82enetu800u82etolocalestring iu800u82edate ; ; loadlist ; 