Business-CyberSource

 view release on metacpan or  search on metacpan

lib/Business/CyberSource/RequestPart/BillTo.pm  view on Meta::CPAN

package Business::CyberSource::RequestPart::BillTo;
use strict;
use warnings;
use namespace::autoclean;

our $VERSION = '0.010008'; # VERSION

use Moose;
extends 'Business::CyberSource::MessagePart';
with    'MooseX::RemoteHelper::CompositeSerialization';

use MooseX::Aliases;
use MooseX::Types::Common::String qw( NonEmptySimpleStr );
use MooseX::Types::Email          qw( EmailAddress      );
use MooseX::Types::NetAddr::IP    qw( NetAddrIPv4       );

use MooseX::Types::CyberSource qw(
	CountryCode
	_VarcharTen
	_VarcharTwenty
	_VarcharFifty
	_VarcharSixty
);

use Moose::Util 'throw_exception';
use Moose::Util::TypeConstraints;

sub BUILD { ## no critic ( Subroutines::RequireFinalReturn )
	my $self = shift;
	if ( $self->country eq 'US' or $self->country eq 'CA' ) {
		throw_exception(AttributeIsRequired =>
			attribute_name => 'postal_code',
			class_name     => __PACKAGE__,
			message        => 'Attribute ('
				. 'postal_code'
				. ') is required for US or Canada',
		) unless $self->has_postal_code;

		throw_exception(AttributeIsRequired =>
			attribute_name => 'state',
			class_name     => __PACKAGE__,
			message        => 'Attribute ('
				. 'state'
				. ') is required for US or Canada',
		) unless $self->has_state;
	}
}

has first_name => (
	remote_name => 'firstName',
	required    => 1,
	is          => 'ro',
	isa         => _VarcharSixty,
);

has last_name => (
	remote_name => 'lastName',
	required    => 1,
	is          => 'ro',
	isa         => _VarcharSixty,
);

has street1 => (
	remote_name => 'street1',



( run in 0.915 second using v1.01-cache-2.11-cpan-39bf76dae61 )