Improved and templated VAT Number management.

This commit is contained in:
Martin Kamerbeek 2009-05-15 17:20:49 +00:00
parent 56ec560255
commit bfc140a365
4 changed files with 34 additions and 26 deletions

View file

@ -2,6 +2,7 @@
- rfe #10061: Use email as username at registration - rfe #10061: Use email as username at registration
- Added WebGUI community statistics question to the site setup wizard. - Added WebGUI community statistics question to the site setup wizard.
- Added Ogone payment plugin ( Martin Kamerbeek / Oqapi ) - Added Ogone payment plugin ( Martin Kamerbeek / Oqapi )
- Improved VAT number management for admins ( Martin Kamerbeek / Oqapi )
7.7.6 7.7.6
- Added mobile style template. If enabled in settings, will serve alternate style templates - Added mobile style template. If enabled in settings, will serve alternate style templates

View file

@ -312,6 +312,12 @@ sub getConfigurationScreen {
hoverHelp => 'The country where your shop resides.', hoverHelp => 'The country where your shop resides.',
options => \%countryOptions, options => \%countryOptions,
); );
$f->template(
name => 'userTemplateId',
value => $self->get('userTemplateId'),
label => 'User screen template',
namespace => 'TaxDriver/EU/User',
);
$f->yesNo( $f->yesNo(
name => 'automaticViesApproval', name => 'automaticViesApproval',
value => $self->get( 'automaticViesApproval' ), value => $self->get( 'automaticViesApproval' ),
@ -606,27 +612,21 @@ Returns the screen for entering per user configuration for this tax driver.
sub getUserScreen { sub getUserScreen {
my $self = shift; my $self = shift;
my $url = $self->session->url; my $url = $self->session->url;
my $var = {};
my $output = '<b>VAT Numbers</b><br />' $var->{ errorMessage } = $self->session->stow->get( 'userTaxError' );
. '<table><thead><tr><th>Country</th><th>VAT Number</th></tr></thead><tbody>';
my @vatNumbers;
foreach my $number ( @{ $self->getVATNumbers } ) { foreach my $number ( @{ $self->getVATNumbers } ) {
my $deleteUrl = $url->page('shop=tax;method=do;do=deleteVATNumber;vatNumber='.$number->{ vatNumber }); $number->{ deleteUrl } =
$output .= $url->page('shop=tax;method=do;do=deleteVATNumber;vatNumber='.$number->{ vatNumber });
'<tr><td>' $number->{ countryName } = $self->getCountryName( $number->{ countryCode } ),
. join( '</td><td>', $number->{ isUsable } = $self->isUsableVATNumber( $number ),
$self->getCountryName( $number->{ countryCode } ),
$number->{ vatNumber }, push @vatNumbers, $number;
$number->{ name },
$number->{ address },
$self->isUsableVATNumber( $number ),
qq{<a href="$deleteUrl">delete</a>},
)
. '</td></tr>'
;
} }
$output .= '</tbody></table>'; $var->{ vatNumber_loop } = \@vatNumbers;
my $f = WebGUI::HTMLForm->new( $self->session ); my $f = WebGUI::HTMLForm->new( $self->session );
$f->hidden( $f->hidden(
@ -648,9 +648,12 @@ sub getUserScreen {
$f->submit( $f->submit(
value => 'Add', value => 'Add',
); );
$output .= $f->print;
return $output; $var->{ addVatNumber_form } = $f->print;
my $template = WebGUI::Asset::Template->new( $self->session, $self->get('userTemplateId') );
return $template->process( $var );
} }
#------------------------------------------------------------------- #-------------------------------------------------------------------
@ -864,12 +867,12 @@ sub www_addVATNumber {
my $vatNumber = uc $form->process( 'vatNumber' ); my $vatNumber = uc $form->process( 'vatNumber' );
my ($countryCode, $number) = $vatNumber =~ m/^([A-Z]{2})([A-Z0-9]+)$/; my ($countryCode, $number) = $vatNumber =~ m/^([A-Z]{2})([A-Z0-9]+)$/;
return 'Illegal country code' unless isIn( $countryCode, keys %EU_COUNTRIES ); my $errorMessage;
$errorMessage = 'Illegal country code' unless isIn( $countryCode, keys %EU_COUNTRIES );
$errorMessage = 'You already have a VAT number for this country.' if @{ $self->getVATNumbers( $countryCode ) };
$errorMessage = $self->addVATNumber( $vatNumber ) unless $errorMessage;
return 'You already have a VAT number for this country.' if @{ $self->getVATNumbers( $countryCode ) }; $self->session->stow->set( 'userTaxError', $errorMessage );
#### TODO: Handle errorMessage.
my $errorMessage = $self->addVATNumber( $vatNumber );
my $instance = WebGUI::Content::Account->createInstance($session,"shop"); my $instance = WebGUI::Content::Account->createInstance($session,"shop");
return $instance->displayContent( $instance->callMethod("manageTaxData", [], $session->user->userId) ); return $instance->displayContent( $instance->callMethod("manageTaxData", [], $session->user->userId) );
@ -1035,6 +1038,7 @@ sub www_saveConfiguration {
shopCountry => $form->process( 'shopCountry', 'selectBox' ), shopCountry => $form->process( 'shopCountry', 'selectBox' ),
automaticViesApproval => $form->process( 'automaticViesApproval', 'yesNo' ), automaticViesApproval => $form->process( 'automaticViesApproval', 'yesNo' ),
acceptOnViesUnavailable => $form->process( 'acceptOnViesUnavailable', 'yesNo' ), acceptOnViesUnavailable => $form->process( 'acceptOnViesUnavailable', 'yesNo' ),
userTemplateId => $form->process( 'userTemplateId', 'template' ),
} ); } );
return ''; return '';

View file

@ -152,15 +152,17 @@ SKIP: {
userId => $taxUser->userId, userId => $taxUser->userId,
countryCode => 'NL', countryCode => 'NL',
vatNumber => $testVAT_NL, vatNumber => $testVAT_NL,
approved => 1, viesValidated => 1,
viesErrorCode => undef, viesErrorCode => undef,
approved => 0,
}; };
my $expectBE = { my $expectBE = {
userId => $taxUser->userId, userId => $taxUser->userId,
countryCode => 'BE', countryCode => 'BE',
vatNumber => $testVAT_BE, vatNumber => $testVAT_BE,
approved => 1, approved => 0,
viesErrorCode => undef, viesErrorCode => undef,
viesValidated => 1,
}; };
my $vatNumbers = $taxer->getVATNumbers( undef, $taxUser ); my $vatNumbers = $taxer->getVATNumbers( undef, $taxUser );
@ -257,6 +259,7 @@ SKIP: {
# #
####################################################################### #######################################################################
$taxer->update( { 'automaticViesApproval' => 1 } );
my $book = WebGUI::Shop::AddressBook->create($session); my $book = WebGUI::Shop::AddressBook->create($session);
# setup address in EU but not in residential country of merchant # setup address in EU but not in residential country of merchant