package Ġdocument os Ċ Ċ import Ġutils . exp res ion Regular Mon eda Ċ import Ġutils . mensaje N ulo Ċ import Ġutils . mensaje Vac io Ċ import Ġutils . mensaje Val ores Ċ import Ġjava . util .* Ċ import Ġjavax . validation . constraints . NotEmpty Ċ import Ġjavax . validation . constraints . NotNull Ċ import Ġjavax . validation . constraints . Pattern Ċ import Ġjavax . validation . constraints . Size Ċ import Ġkotlin . collections . ArrayList Ċ Ċ open Ġclass ĠDet alle Ġ{ ĊĊĠĠĠ Ġ@ NotEmpty ( message Ġ= Ġ" codigo Principal Ġ$ mensaje Vac io ") ĊĠĠĠ Ġ@ Size ( min Ġ= Ġ 1 , Ġmax Ġ= Ġ 2 5 , Ġmessage Ġ= Ġ" codigo Principal Ġ$ mensaje Val ores Ġde Ġ 1 Ġa Ġ 2 5 Ġcaracteres ") ĊĠĠĠ Ġvar Ġcodigo Principal : ĠString ? ĊĊĠĠĠ Ġfun Ġget Codigo Principal (): ĠOptional < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠOptional . of ( codigo Principal !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ NotEmpty ( message Ġ= Ġ" codigo Aux iliar Ġ$ mensaje Vac io ") ĊĠĠĠ Ġ@ Size ( min Ġ= Ġ 1 , Ġmax Ġ= Ġ 2 5 , Ġmessage Ġ= Ġ" codigo Aux iliar Ġ$ mensaje Val ores Ġde Ġ 1 Ġa Ġ 2 5 Ġcaracteres ") ĊĠĠĠ Ġvar Ġcodigo Aux iliar : ĠString ? ĊĊĠĠĠ Ġfun Ġget Codigo Aux iliar (): ĠOptional < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠOptional . of ( codigo Aux iliar !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ NotNull ( message Ġ= Ġ" descripcion Ġ$ mensaje N ulo ") ĊĠĠĠ Ġ@ NotEmpty ( message Ġ= Ġ" descripcion Ġ$ mensaje Vac io ") ĊĠĠĠ Ġ@ Size ( min Ġ= Ġ 1 , Ġmax Ġ= Ġ 3 0 0 , Ġmessage Ġ= Ġ" descripcion Ġ$ mensaje Val ores Ġde Ġ 1 Ġa Ġ 3 0 0 Ġcaracteres ") ĊĠĠĠ Ġvar Ġdescri pcion : ĠString ĊĊĠĠĠ Ġ@ NotNull ( message Ġ= Ġ" cantidad Ġ$ mensaje N ulo ") ĊĠĠĠ Ġ@ Pattern ( ĊĠĠĠĠĠĠĠ Ġregexp Ġ= Ġexp res ion Regular Mon eda , ĊĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" cantidad Ġ$ mensaje Val ores Ġde Ġ 1 Ġa Ġ 1 4 Ġenter os Ġy Ġdesde Ġ 1 Ġh asta Ġ 6 Ġdec im ales Ġsepar ados Ġpor Ġpunto " ĊĠĠĠ Ġ) ĊĠĠĠ Ġvar Ġcantidad : ĠString ĊĊĠĠĠ Ġ@ NotNull ( message Ġ= Ġ" precio Unit ario Ġ$ mensaje N ulo ") ĊĠĠĠ Ġ@ Pattern ( ĊĠĠĠĠĠĠĠ Ġregexp Ġ= Ġexp res ion Regular Mon eda , ĊĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" precio Unit ario Ġ$ mensaje Val ores Ġde Ġ 1 Ġa Ġ 1 4 Ġenter os Ġy Ġdesde Ġ 1 Ġh asta Ġ 6 Ġdec im ales Ġsepar ados Ġpor Ġpunto " ĊĠĠĠ Ġ) ĊĠĠĠ Ġvar Ġprec io Unit ario : ĠString ĊĊĠĠĠ Ġ@ NotNull ( message Ġ= Ġ" desc uento Ġ$ mensaje N ulo ") ĊĠĠĠ Ġ@ Pattern ( ĊĠĠĠĠĠĠĠ Ġregexp Ġ= Ġexp res ion Regular Mon eda , ĊĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" desc uento Ġ$ mensaje Val ores Ġde Ġ 1 Ġa Ġ 1 4 Ġenter os Ġy Ġdesde Ġ 1 Ġh asta Ġ 6 Ġdec im ales Ġsepar ados Ġpor Ġpunto " ĊĠĠĠ Ġ) ĊĠĠĠ Ġvar Ġdesc uento : ĠString ĊĊĠĠĠ Ġ@ NotNull ( message Ġ= Ġ" precio Total Sin Imp uesto Ġ$ mensaje N ulo ") ĊĠĠĠ Ġ@ Pattern ( ĊĠĠĠĠĠĠĠ Ġregexp Ġ= Ġexp res ion Regular Mon eda , ĊĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" precio Total Sin Imp uesto Ġ$ mensaje Val ores Ġde Ġ 1 Ġa Ġ 1 4 Ġenter os Ġy Ġdesde Ġ 1 Ġh asta Ġ 6 Ġdec im ales Ġsepar ados Ġpor Ġpunto " ĊĠĠĠ Ġ) ĊĠĠĠ Ġvar Ġprec io Total Sin Imp uesto : ĠString ĊĊĠĠĠ Ġvar Ġdetal les Ad icion ales : ĠArrayList < Detalle Ad ic ional >? ĊĊĠĠĠ Ġ@ NotNull ( message Ġ= Ġ" imp uest os Ġ$ mensaje N ulo ") ĊĠĠĠ Ġvar Ġimp uest os : ĠArrayList < Imp uesto > ĊĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġcodigo Principal : ĠString ?, ĊĠĠĠĠĠĠĠ Ġcodigo Aux iliar : ĠString ?, ĊĠĠĠĠĠĠĠ Ġdescri pcion : ĠString , ĊĠĠĠĠĠĠĠ Ġcantidad : ĠString , ĊĠĠĠĠĠĠĠ Ġprec io Unit ario : ĠString , ĊĠĠĠĠĠĠĠ Ġdesc uento : ĠString , ĊĠĠĠĠĠĠĠ Ġprec io Total Sin Imp uesto : ĠString , ĊĠĠĠĠĠĠĠ Ġdetal les Ad icion ales : ĠArrayList < Detalle Ad ic ional > ?, ĊĠĠĠĠĠĠĠ Ġimp uest os : ĠArrayList < Imp uesto > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . codigo Principal Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( codigo Principal Ġ== Ġnull ) Ġnull Ġelse ĠGener ar Document os . remo ver Car acter es E spec ia les ( codigo Principal ) ĊĠĠĠĠĠĠĠ Ġthis . codigo Aux iliar Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( codigo Aux iliar Ġ== Ġnull ) Ġnull Ġelse ĠGener ar Document os . remo ver Car acter es E spec ia les ( codigo Aux iliar ) ĊĠĠĠĠĠĠĠ Ġthis . descripcion Ġ= ĠGener ar Document os . remo ver Car acter es E spec ia les ( descripcion ) ĊĠĠĠĠĠĠĠ Ġthis . cantidad Ġ= Ġcantidad ĊĠĠĠĠĠĠĠ Ġthis . precio Unit ario Ġ= Ġprec io Unit ario ĊĠĠĠĠĠĠĠ Ġthis . desc uento Ġ= Ġdesc uento ĊĠĠĠĠĠĠĠ Ġthis . precio Total Sin Imp uesto Ġ= Ġprec io Total Sin Imp uesto ĊĠĠĠĠĠĠĠ Ġthis . detal les Ad icion ales Ġ= Ġdetal les Ad icion ales ĊĠĠĠĠĠĠĠ Ġthis . imp uest os Ġ= Ġimp uest os ĊĠĠĠ Ġ} Ċ }