package Ġcom . paypal . checkout samples . order . use case Ċ Ċ import Ġcom . paypal . checkout . create order . Currency Code Ċ import Ġcom . paypal . checkout . order . Amount Ċ import Ġcom . paypal . checkout . order . Break Down Ċ import Ġcom . paypal . checkout . order . Unit Amount Ċ import Ġcom . paypal . checkout samples . order . Created Item Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . math . Round ingMode Ċ import Ġjava . text . Decimal Format Ċ Ċ /** Ċ Ġ* ĠCreate Amount Request Ġcontains Ġall Ġof Ġthe Ġnecessary Ġproperties Ġto Ġsuccessfully Ġcreate Ġan ĠAmount Ġwith Ċ Ġ* Ġthe ĠPay Pal ĠCheckout ĠSDK . Ċ Ġ*/ Ċ data Ġclass ĠCreate Amount Request ( ĊĠĠĠ Ġval Ġcreated Items : ĠList < Created Item >, ĊĠĠĠ Ġval Ġcurrency Code : ĠCurrency Code Ċ ) Ċ Ċ /** Ċ Ġ* ĠCreate Order UseCase Ġprovides Ġa Ġway Ġto Ġconstruct Ġan Ġ[ Amount ] Ġgiven Ġa Ġ[ Create Amount Request ]. ĠIn Ċ Ġ* Ġorder Ġto Ġsuccessfully Ġcreate Ġan Ġ[ Amount ] Ġfor Ġa ĠPurchase Unit Ġthe Ġvalue Ġ( what Ġthe Ġcustomer Ġis Ċ Ġ* Ġchar ged ). ĠThe Ġfollowing Ġcalculation Ġis Ġused Ġwhen Ġdetermining Ġthe Ġtotal Ġvalue : Ċ Ġ* ĠĠĠĠ Ġitem Total Ġ+ Ġtax Total Ġ+ Ġshipping Ġ+ Ġhandling Ġ+ Ġins urance Ġ- Ġshipping Discount Ġ- Ġdiscount Ċ Ġ*/ Ċ class ĠCreate Amount UseCase Ġ{ ĊĊĠĠĠ Ġfun Ġexecute ( request : ĠCreate Amount Request ): ĠAmount Ġ= Ġwith ( request ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Total Ġ= Ġcreated Items . map Ġ{ Ġit . amount . toDouble () Ġ* Ġit . quantity . toInt () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sum (). to BigDecimal (). scaled For Money ĊĠĠĠĠĠĠĠ Ġval Ġtax Total Ġ= Ġcreated Items . map Ġ{ Ġit . tax Amount . toDouble () Ġ* Ġit . quantity . toInt () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sum (). to BigDecimal (). scaled For Money ĊĠĠĠĠĠĠĠ Ġval Ġshipping Total Ġ= ĠBigDecimal ( 0 . 0 0 ). scaled For Money ĊĠĠĠĠĠĠĠ Ġval Ġhandling Total Ġ= ĠBigDecimal ( 0 . 0 0 ). scaled For Money ĊĠĠĠĠĠĠĠ Ġval Ġshipping Discount Total Ġ= ĠBigDecimal ( 0 . 0 0 ). scaled For Money ĊĠĠĠĠĠĠĠ Ġval Ġitem Discount Total Ġ= ĠBigDecimal ( 0 . 0 0 ). scaled For Money ĊĠĠĠĠĠĠĠ Ġval Ġtotal Value Ġ= Ġitem Total ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( tax Total ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( shipping Total ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( handling Total ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subtract ( shipping Discount Total ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subtract ( item Discount Total ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠAmount . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. currency Code ( currency Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. value ( total Value . as Money String ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. break down ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBreak Down . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. item Total ( item Total . unit Amount For ( currency Code )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. shipping ( shipping Total . unit Amount For ( currency Code )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. handling ( handling Total . unit Amount For ( currency Code )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. tax Total ( tax Total . unit Amount For ( currency Code )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. shipping Discount ( shipping Discount Total . unit Amount For ( currency Code )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. discount ( item Discount Total . unit Amount For ( currency Code )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠBigDecimal . unit Amount For ( currency Code : ĠCurrency Code ): ĠUnit Amount Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠUnit Amount . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. value ( as Money String ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. currency Code ( currency Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠBigDecimal . as Money String : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠDecimal Format ("# 0 . 0 0 "). format ( this ) ĊĊĠĠĠ Ġprivate Ġval ĠBigDecimal . scaled For Money : ĠBigDecimal ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġset Scale ( 2 , ĠRound ingMode . HALF _ UP ) Ċ } Ċ