/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠK or bin ian ĠM oser Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠBSD Ġ 3 - Clause ĠLicense Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttps :// opensource . org / licenses / BSD - 3 - Clause Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . kor bi . simple budget . utilities Ċ Ċ import Ġcom . kor bi . simple budget . R Ċ import Ġcom . kor bi . simple budget . Simple Budget App Ċ import Ġorg . th reet en . bp . LocalDate Ċ import Ġjava . text . Decimal Format Ċ import Ġkotlin . math . round Ċ Ċ inline Ġfun Ġ< T > ĠIterable < T >. sum By Long ( selector : Ġ( T ) Ġ-> ĠLong ): ĠLong Ġ{ ĊĠĠĠ Ġvar Ġsum Ġ= Ġ 0 L ĊĠĠĠ Ġfor Ġ( element Ġin Ġthis ) Ġsum Ġ+= Ġselector ( element ) ĊĠĠĠ Ġreturn Ġ Ġsum Ċ } Ċ Ċ fun ĠLong . create Currency String ( omit Decimal If Integer : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġomit Currency Symbol : ĠBoolean Ġ= Ġfalse ): ĠString Ġ{ ĊĊĠĠĠ Ġval Ġon Left Ġ= ĠSimple Budget App . pref . getBoolean ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSimple Budget App . res . getString ( R . string . settings _ key _ currency _ left ), Ġfalse ) ĊĠĠĠ Ġval Ġamount String Ġ= Ġwhen Ġ( Simple Budget App . pref . getBoolean ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSimple Budget App . res . getString ( R . string . settings _ key _ currency _ decimal ), Ġfalse )) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdecimal Amount Ġ= Ġthis . toFloat ()/ 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhas No Decimal Ġ= Ġround ( decimal Amount ) Ġ== Ġdecimal Amount ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( omit Decimal If Integer Ġ&& Ġhas No Decimal ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġround ( decimal Amount ). toInt (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple Budget App . decimal Format . format ( this . toDouble ()/ 1 0 0 ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġtrue Ġ-> ĠString . format ("% , d ", Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġcurrency Symbol Ġ= ĠSimple Budget App . pref . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSimple Budget App . res . getString ( R . string . settings _ key _ currency ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSimple Budget App . res . getString Array ( R . array . currencies _ symbols )[ 0 ]) ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġomit Currency Symbol Ġ-> Ġamount String ĊĠĠĠĠĠĠĠ Ġon Left Ġ-> Ġ"$ currency Symbol Ġ$ amount String " ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"$ amount String Ġ$ currency Symbol " ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠLong . create Currency String Round ToInt (): ĠString Ġ{ ĊĠĠĠ Ġval Ġcurrency Format Ġ= ĠDecimal Format ("# ") ĊĠĠĠ Ġval Ġcurrency Symbol Ġ= ĠSimple Budget App . pref ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getString ( Simple Budget App . res . getString ( R . string . settings _ key _ currency ), Ġ"$ ") ĊĊĠĠĠ Ġval Ġamount String Ġ= Ġwhen Ġ( Simple Budget App . pref . getBoolean ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSimple Budget App . res . getString ( R . string . settings _ key _ currency _ decimal ), Ġfalse )) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġcurrency Format . format ( this ) ĊĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġcurrency Format . format ( this / 1 0 0 ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġwhen Ġ( Simple Budget App . pref . getBoolean ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSimple Budget App . res . getString ( R . string . settings _ key _ currency _ left ), Ġfalse )) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġ"$ currency Symbol $ amount String " ĊĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġ"$ amount String $ currency Symbol " ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠLong . create Currency String For EditText (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( Simple Budget App . pref . getBoolean ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSimple Budget App . res . getString ( R . string . settings _ key _ currency _ decimal ), Ġfalse )) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġthis . toString () ĊĠĠĠĠĠĠĠ Ġfalse Ġ-> ĠString . format ("% . 2 f ", Ġthis . toDouble () Ġ/ Ġ 1 0 0 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠString . parse Currency Amount (): ĠLong ? Ġ{ ĊĠĠĠ Ġvar Ġtmp Ġ= Ġthis . replace (",", Ġ". ") ĊĊĠĠĠ Ġif Ġ(! Simple Budget App . pref . getBoolean ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple Budget App . res . getString ( R . string . settings _ key _ currency _ decimal ), Ġfalse )) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġwhen ( tmp . split (". "). get OrNull ( 1 )?. length Ġ?: Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġtmp Ġ+= Ġ" 0 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġtmp Ġ+= Ġ" 0 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġtmp . replace (".", Ġ""). to Long OrNull () Ċ } Ċ Ċ fun ĠLocalDate . is Between ( start : ĠLocalDate , Ġend : ĠLocalDate ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġthis . is After ( start . minus Days ( 1 )) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Before ( end . plus Days ( 1 )) Ċ }