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
- Added WebGUI community statistics question to the site setup wizard.
- Added Ogone payment plugin ( Martin Kamerbeek / Oqapi )
- Improved VAT number management for admins ( Martin Kamerbeek / Oqapi )
7.7.6
- 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.',
options => \%countryOptions,
);
$f->template(
name => 'userTemplateId',
value => $self->get('userTemplateId'),
label => 'User screen template',
namespace => 'TaxDriver/EU/User',
);
$f->yesNo(
name => 'automaticViesApproval',
value => $self->get( 'automaticViesApproval' ),
@ -606,27 +612,21 @@ Returns the screen for entering per user configuration for this tax driver.
sub getUserScreen {
my $self = shift;
my $url = $self->session->url;
my $var = {};
$var->{ errorMessage } = $self->session->stow->get( 'userTaxError' );
my $output = '<b>VAT Numbers</b><br />'
. '<table><thead><tr><th>Country</th><th>VAT Number</th></tr></thead><tbody>';
my @vatNumbers;
foreach my $number ( @{ $self->getVATNumbers } ) {
my $deleteUrl = $url->page('shop=tax;method=do;do=deleteVATNumber;vatNumber='.$number->{ vatNumber });
$output .=
'<tr><td>'
. join( '</td><td>',
$self->getCountryName( $number->{ countryCode } ),
$number->{ vatNumber },
$number->{ name },
$number->{ address },
$self->isUsableVATNumber( $number ),
qq{<a href="$deleteUrl">delete</a>},
)
. '</td></tr>'
;
$number->{ deleteUrl } =
$url->page('shop=tax;method=do;do=deleteVATNumber;vatNumber='.$number->{ vatNumber });
$number->{ countryName } = $self->getCountryName( $number->{ countryCode } ),
$number->{ isUsable } = $self->isUsableVATNumber( $number ),
push @vatNumbers, $number;
}
$output .= '</tbody></table>';
$var->{ vatNumber_loop } = \@vatNumbers;
my $f = WebGUI::HTMLForm->new( $self->session );
$f->hidden(
@ -648,9 +648,12 @@ sub getUserScreen {
$f->submit(
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 ($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 ) };
#### TODO: Handle errorMessage.
my $errorMessage = $self->addVATNumber( $vatNumber );
$self->session->stow->set( 'userTaxError', $errorMessage );
my $instance = WebGUI::Content::Account->createInstance($session,"shop");
return $instance->displayContent( $instance->callMethod("manageTaxData", [], $session->user->userId) );
@ -1035,6 +1038,7 @@ sub www_saveConfiguration {
shopCountry => $form->process( 'shopCountry', 'selectBox' ),
automaticViesApproval => $form->process( 'automaticViesApproval', 'yesNo' ),
acceptOnViesUnavailable => $form->process( 'acceptOnViesUnavailable', 'yesNo' ),
userTemplateId => $form->process( 'userTemplateId', 'template' ),
} );
return '';

View file

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