package Ġcom . h end ra angg rian . open p ss . ui . invoice . job Ċ Ċ import Ġcom . h end ra angg rian . open p ss . Fx Component Ċ import Ġcom . h end ra angg rian . open p ss . R 2 Ċ import Ġcom . h end ra angg rian . open p ss . control . Double Field Ċ import Ġcom . h end ra angg rian . open p ss . schema . Invoice Ċ import Ġjavafx . beans . Observable Ċ import Ġjavafx . beans . value . Observable Boolean Value Ċ import Ġk tf x . layouts . K tf x Grid Pane Ċ import Ġk tf x . layouts . label Ċ import Ġk tf x . less Eq Ċ import Ġk tf x . or Ċ import Ġk tf x . to Boolean Binding Ċ Ċ class ĠAdd Other Job Pop Over ( component : ĠF x Component ) Ġ: ĠAdd Job Pop Over < Invoice . Other Job >( ĊĠĠĠ Ġcomponent , ĊĠĠĠ ĠR 2 . string . add _ other _ job Ċ ), ĠInvoice . Job Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġprice Field : ĠDouble Field ĊĊĠĠĠ Ġoverride Ġfun ĠK tf x Grid Pane . onCreate Content () Ġ{ ĊĠĠĠĠĠĠĠ Ġlabel ( getString ( R 2 . string . price )) Ġcol Ġ 0 Ġrow Ġcurrent Row ĊĠĠĠĠĠĠĠ Ġprice Field Ġ= Ġadd Child ( Double Field (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprompt Text Ġ= ĠgetString ( R 2 . string . price ) ĊĠĠĠĠĠĠĠ Ġ}) Ġcol Ġ( 1 Ġto Ġ 2 ) Ġrow Ġcurrent Row ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġtotal Binding Dependencies : ĠArray < Observable > ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠarrayOf ( qty Field . value Property (), Ġprice Field . value Property ()) ĊĊĠĠĠ Ġoverride Ġval Ġdefault Button Disable Binding : ĠObservable Boolean Value ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtitle Field . text Property (). to Boolean Binding Ġ{ Ġit !!. isBlank () Ġ} Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqty Field . value Property (). less Eq ( 0 ) Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Field . value Property (). less Eq ( 0 ) ĊĊĠĠĠ Ġoverride Ġval Ġnullable Result : ĠInvoice . Other Job ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠInvoice . Other Job . new ( qty , Ġdesc , Ġtotal ) ĊĊĠĠĠ Ġoverride Ġfun Ġcalculate Total (): ĠDouble Ġ= Ġqty Field . value Ġ* Ġprice Field . value Ċ } Ċ