diff --git a/docs/upgrades/packages-7.7.0/root_import_account_shop.wgpkg b/docs/upgrades/packages-7.7.0/root_import_account_shop.wgpkg new file mode 100644 index 000000000..7d039869e Binary files /dev/null and b/docs/upgrades/packages-7.7.0/root_import_account_shop.wgpkg differ diff --git a/docs/upgrades/upgrade_7.6.14-7.7.0.pl b/docs/upgrades/upgrade_7.6.14-7.7.0.pl index 1ce34356e..e0fb9223a 100644 --- a/docs/upgrades/upgrade_7.6.14-7.7.0.pl +++ b/docs/upgrades/upgrade_7.6.14-7.7.0.pl @@ -49,6 +49,7 @@ pa_addPassiveAnalyticsStatus($session); # vendor payouts addTransactionItemFlags( $session ); +createShopAcccountPluginSettings( $session ); finish($session); # this line required @@ -291,6 +292,16 @@ sub addTransactionItemFlags { print "Done.\n" unless $quiet; } +#---------------------------------------------------------------------------- +sub createShopAcccountPluginSettings { + my $session = shift; + print "Creating default settings for the account plugin..." unless $quiet; + + $session->setting->add('shopMySalesTemplateId', '-zxyB-O50W8YnL39Ouoc4Q'); + + print "Done.\n" unless $quiet; +} + #---------------------------------------------------------------------------- # Describe what our function does #sub exampleFunction { diff --git a/lib/WebGUI/Account/Shop.pm b/lib/WebGUI/Account/Shop.pm index dc8bd8452..98cf169fd 100644 --- a/lib/WebGUI/Account/Shop.pm +++ b/lib/WebGUI/Account/Shop.pm @@ -48,8 +48,11 @@ sub appendCommonVars { my $user = $session->user; my $method = $session->form->get("do"); - $var->{'manage_purchases_url' } = $self->getUrl("module=shop;do=managePurchases"); - $var->{'managesPurchasesIsActive'} = WebGUI::Utility::isIn($method,("","managePurchases","view","viewTransaction")); + $var->{ 'manage_purchases_url' } = $self->getUrl("module=shop;do=managePurchases"); + $var->{ 'managesPurchasesIsActive' } = WebGUI::Utility::isIn($method,("","managePurchases","view","viewTransaction")); + + $var->{ 'view_sales_url' } = $self->getUrl( 'module=shop;do=viewSales' ); + $var->{ 'viewSalesIsActive' } = $method eq 'viewSales'; } #------------------------------------------------------------------- @@ -108,6 +111,13 @@ sub editSettingsForm { label => $shopi18n->get("my purchases detail template"), hoverHelp => $shopi18n->get("my purchases detail template help") ); + $f->template( + name => 'shopMySalesTemplateId', + value => $self->session->setting->get('shopMySalesTemplateId'), + namespace => 'Shop/MySales', + label => $shopi18n->echo('my sales template'), + hoverHelp => $shopi18n->echo('my sales template help'), + ); return $f->printRowsOnly; } @@ -130,6 +140,7 @@ sub editSettingsFormSave { $setting->set("shopLayoutTemplateId", $form->process("shopLayoutTemplateId","template")); $setting->set("shopMyPurchasesTemplateId", $form->process("shopMyPurchasesTemplateId","template")); $setting->set("shopMyPurchasesDetailTemplateId", $form->process("shopMyPurchasesDetailTemplateId","template")); + $setting->set("shopMySalesTemplateId", $form->process("shopMySalesTemplateId","template")); } #------------------------------------------------------------------- @@ -208,6 +219,43 @@ sub www_view { #------------------------------------------------------------------- +=head2 www_viewSales ( ) + +Page that show your earnings if you are a vendor. + +=cut + +sub www_viewSales { + my $self = shift; + my $session = $self->session; + my $vendor = WebGUI::Shop::Vendor->newByUserId( $session, $session->user->userId ); + + my $var = $vendor->getPayoutTotals; + my $totalSales = 0; + my @products; + + my $sth = $session->db->read( + 'select *, sum(quantity) as quantity, sum(vendorPayoutAmount) as payoutAmount from transactionItem ' + .'where vendorId=? group by assetId order by quantity desc', + [ $vendor->getId ] + ); + while (my $row = $sth->hashRef) { + push @products, $row; + $totalSales += $row->{quantity}; + } + $sth->finish; + + $var->{ product_loop } = \@products; + $var->{ total_products } = scalar @products; + $var->{ total_sales } = $totalSales; + + $self->appendCommonVars( $var ); + + return $self->processTemplate( $var, $session->setting->get('shopMySalesTemplateId') ); +} + +#------------------------------------------------------------------- + =head2 www_viewTransaction ( ) The main view page for editing the user's profile. @@ -294,4 +342,5 @@ sub www_viewTransaction { + 1; diff --git a/lib/WebGUI/Shop/Admin.pm b/lib/WebGUI/Shop/Admin.pm index b8fc9eb26..bcc7ef7d5 100644 --- a/lib/WebGUI/Shop/Admin.pm +++ b/lib/WebGUI/Shop/Admin.pm @@ -68,6 +68,7 @@ sub getAdminConsole { $ac->addSubmenuItem($url->page("shop=ship;method=manage"), $i18n->get("shipping methods")); $ac->addSubmenuItem($url->page("shop=transaction;method=manage"), $i18n->get("transactions")); $ac->addSubmenuItem($url->page("shop=vendor;method=manage"), $i18n->get("vendors")); + $ac->addSubmenuItem($url->page("shop=vendor;method=managePayouts"), $i18n->get("vendor payouts")); $ac->addSubmenuItem($url->page("shop=credit;method=manage"), $i18n->get("in shop credit")); return $ac; } diff --git a/lib/WebGUI/i18n/English/Account_Shop.pm b/lib/WebGUI/i18n/English/Account_Shop.pm index dd8d274a7..666d643a3 100644 --- a/lib/WebGUI/i18n/English/Account_Shop.pm +++ b/lib/WebGUI/i18n/English/Account_Shop.pm @@ -49,6 +49,11 @@ our $I18N = { lastUpdated => 1230867169, }, + 'my sales label' => { + message => q{Sales}, + lastUpdated => 0, + }, + }; 1; diff --git a/lib/WebGUI/i18n/English/Shop.pm b/lib/WebGUI/i18n/English/Shop.pm index 6f9183459..8311e03b4 100644 --- a/lib/WebGUI/i18n/English/Shop.pm +++ b/lib/WebGUI/i18n/English/Shop.pm @@ -555,6 +555,12 @@ our $I18N = { context => q|admin function label| }, + 'vendor payouts' => { + message => q|Vendor payouts|, + lastUpdated => 0, + context => q|admin function label| + }, + 'update' => { message => q|Update|, lastUpdated => 0,