From bfc140a3657f1beb2784d60e2c0707fcdfe90853 Mon Sep 17 00:00:00 2001 From: Martin Kamerbeek Date: Fri, 15 May 2009 17:20:49 +0000 Subject: [PATCH] Improved and templated VAT Number management. --- docs/changelog/7.x.x.txt | 1 + .../root_import_default-eu-user-screen.wgpkg | Bin 0 -> 1202 bytes lib/WebGUI/Shop/TaxDriver/EU.pm | 52 ++++++++++-------- t/Shop/TaxDriver/EU.t | 7 ++- 4 files changed, 34 insertions(+), 26 deletions(-) create mode 100644 docs/upgrades/packages-7.7.7/root_import_default-eu-user-screen.wgpkg diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index f10a6d825..5abfa1285 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -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 diff --git a/docs/upgrades/packages-7.7.7/root_import_default-eu-user-screen.wgpkg b/docs/upgrades/packages-7.7.7/root_import_default-eu-user-screen.wgpkg new file mode 100644 index 0000000000000000000000000000000000000000..9538d5300cf5c6ec10fddaf3a85963b24ff89e6c GIT binary patch literal 1202 zcmV;j1Wo%NiwFP!000001MOB(bJ{o%=DEMZ^5LMLHJ1IfeXh7m}B z5@WfNOu}{g-@B5GWxz?>n=*F~@l0^+)$V@!cJ-}~D~G>)-){s#rQ-Y5M&R4KlV5(N zTCMpfC$(x2oK&1@748)WTn>MwLLv^(mWWFlznt%TcGx6bYIElPa-{#2MWe0S-=KN? zAlNHB{0sCD{j^@Ub>H+sR{o%V+SsXo-S?plfX%~ShpPYa;i3PE3}4JAvGt+if?^DB6ou8|`vGT?$#r6wDiAT}EKPd2 zi>WkTHS4x1t~P{=TDu!d!kydB5cpV52p6FTZ}0hito}j?y)dRThj7mL6%hg|udQLC zZ|c~FlXh2`TcI~;JH};&c!`f^oI)=Po9D5)BE}MDg=Al&8LLN|XoF@vKJR_H8IH#V z6PiTCnJ|tC|Kr}R-n#`G&;QqW<)Zz8rLp8|K(g4gDKbp@QgbJPc3%JuO`y7AT&V>K=_rCY`Pwv%Vg=LDOcMf9bv~ zcEwGCum63^eW+cbyjvS?U&drYGWcqPSiP6}G4MK%d6;&Lg zEY>0(Y0_sBFier8%;;5t7#Jhz@P{EN8dI(0F3OIZO{FFGhW?Xb2$}`v62xIkuhG_O zT@0@-_erGUlBv;Prq$MPpdzE}wQ6fyv)O1igGQ~eaZXlL03m0anO0UDs^?PP8g{Q@ z!Jc~YIW(kUqc8zLddx7}jJ92LF*J}!(A4lWM9*iOt_b(KBTv=cCfN)HI~(1XM}s*t zyCVU{!H>-Wb)*UsqqVS1^Yb)T9zxxC+ZrE&s)RdwuAX-^T)isQZDjyB`UfKALSy0< zg>_GZL(pL>AUnEijX$Ba+UY0t6(B1H_Ouk&863Z>oOzCdn^BZ;Sc zoyb8+4@)%9K9D}9*Z${+-s)o1@8HG*UIlmk%eietDsI*Sx^cIY^%>e6&EmHi=#l=6 zEK?-?^|^oWPJcfwd=G(MfQo1E2Jf}BXl2fS3XAg-m*G>N!(ZQh{S}|yZ!z8&cw^v= Qf&Y|&Z_3ir?*J440LoTNmH+?% literal 0 HcmV?d00001 diff --git a/lib/WebGUI/Shop/TaxDriver/EU.pm b/lib/WebGUI/Shop/TaxDriver/EU.pm index cf82ac5d4..b2f82e339 100644 --- a/lib/WebGUI/Shop/TaxDriver/EU.pm +++ b/lib/WebGUI/Shop/TaxDriver/EU.pm @@ -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 = 'VAT Numbers
' - . ''; - + my @vatNumbers; foreach my $number ( @{ $self->getVATNumbers } ) { - my $deleteUrl = $url->page('shop=tax;method=do;do=deleteVATNumber;vatNumber='.$number->{ vatNumber }); - $output .= - '' - ; + $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 .= '
CountryVAT Number
' - . join( '', - $self->getCountryName( $number->{ countryCode } ), - $number->{ vatNumber }, - $number->{ name }, - $number->{ address }, - $self->isUsableVATNumber( $number ), - qq{delete}, - ) - . '
'; + $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 ''; diff --git a/t/Shop/TaxDriver/EU.t b/t/Shop/TaxDriver/EU.t index f31c5063c..c41029672 100644 --- a/t/Shop/TaxDriver/EU.t +++ b/t/Shop/TaxDriver/EU.t @@ -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