use
version;
our
$VERSION
= qv(
'400'
);
has
'container'
=> (
is
=>
'rw'
,
default
=>
undef
);
has
'size'
=> (
is
=>
'rw'
,
default
=>
'Regular'
);
has
'machinable'
=> (
is
=>
'rw'
,
default
=>
undef
);
has
'mail_type'
=> (
is
=>
'rw'
,
default
=>
'Package'
);
has
'ounces'
=> (
is
=>
'rw'
,
default
=>
'0.00'
);
has
'pounds'
=> (
is
=>
'rw'
,
default
=>
'0.00'
);
has
'width'
=> (
is
=>
'rw'
,
default
=>
''
);
has
'height'
=> (
is
=>
'rw'
,
default
=>
''
);
has
'length'
=> (
is
=>
'rw'
,
default
=>
''
);
has
'girth'
=> (
is
=>
'rw'
,
default
=>
''
);
__PACKAGE__->meta()->make_immutable();
sub
weight {
my
(
$self
,
$in_weight
) =
@_
;
trace(
'()'
);
if
(
$in_weight
) {
$self
->set_lbs_oz(
$in_weight
);
}
my
$out_weight
=
$self
->lbs_oz_to_weight;
return
$out_weight
;
}
sub
set_lbs_oz {
my
(
$self
,
$in_weight
) =
@_
;
my
$pounds
= 0;
my
$ounces
= 0;
$pounds
=
int
$in_weight
;
my
$remainder
=
$in_weight
-
$pounds
;
$remainder
= 0
if
$remainder
< 0;
if
(
$remainder
) {
$ounces
=
$remainder
* 16;
$ounces
=
sprintf
(
"%1.0f"
,
$ounces
);
}
$self
->pounds(
$pounds
);
$self
->ounces(
$ounces
);
return
;
}
sub
lbs_oz_to_weight {
my
(
$self
) =
@_
;
trace
'()'
;
my
$pounds
=
$self
->pounds || 0;
my
$ounces
=
$self
->ounces || 0;
my
$fractional_pounds
=
$ounces
? (
$ounces
/ 16) : 0;
my
$weight
= (
$pounds
+
$fractional_pounds
);
return
$weight
;
}
1;