From 26e69a2d18316f49ddc3d9905e5bd2b2b01b6424 Mon Sep 17 00:00:00 2001 From: Matthew Somerville Date: Thu, 23 Jan 2025 09:50:59 +0000 Subject: [PATCH] [Kingston] Garden changes. --- perllib/FixMyStreet/App/Controller/Waste.pm | 4 +- .../App/Form/Waste/Garden/Sacks/Choice.pm | 1 + perllib/FixMyStreet/Roles/Cobrand/Echo.pm | 2 +- t/app/controller/waste_kingston.t | 221 +++++++----------- .../email/default/waste/_garden_data.html | 1 + .../web/base/admin/reports/_edit_waste.html | 2 +- .../waste/garden/subscribe_confirm.html | 4 +- 7 files changed, 96 insertions(+), 139 deletions(-) diff --git a/perllib/FixMyStreet/App/Controller/Waste.pm b/perllib/FixMyStreet/App/Controller/Waste.pm index 20fd5604f37..937f85902d2 100644 --- a/perllib/FixMyStreet/App/Controller/Waste.pm +++ b/perllib/FixMyStreet/App/Controller/Waste.pm @@ -35,7 +35,7 @@ has index_template => ( my %GARDEN_IDS = ( merton => { bin240 => 26, bin140 => 27, sack => 28 }, - kingston => { bin240 => 26, bin140 => 27, sack => 28 }, + kingston => { bin240 => 39, bin140 => 37, sack => 36 }, sutton => { bin240 => 39, bin140 => 37, sack => 36 }, ); lock_hash(%GARDEN_IDS); @@ -1365,6 +1365,7 @@ sub process_garden_cancellation : Private { $c->set_param($end_date_field, $now->dmy('/')); my $service = $c->cobrand->garden_current_subscription; + # Not actually used by Kingston/Sutton if (!$c->stash->{slwp_garden_sacks} || $service->{garden_container} == $GARDEN_IDS{$c->cobrand->moniker}{bin240} || $service->{garden_container} == $GARDEN_IDS{$c->cobrand->moniker}{bin140}) { my $bin_count = $c->cobrand->get_current_garden_bins; $data->{new_bins} = $bin_count * -1; @@ -1459,6 +1460,7 @@ sub process_garden_modification : Private { # Needs to check current subscription too my $service = $c->cobrand->garden_current_subscription; if ($c->stash->{slwp_garden_sacks} && $service->{garden_container} == $GARDEN_IDS{$c->cobrand->moniker}{sack}) { # SLWP Sack + # This must be Kingston $data->{bins_wanted} = 1; $data->{new_bins} = 1; $payment = $c->cobrand->garden_waste_sacks_cost_pa(); diff --git a/perllib/FixMyStreet/App/Form/Waste/Garden/Sacks/Choice.pm b/perllib/FixMyStreet/App/Form/Waste/Garden/Sacks/Choice.pm index be6af63b808..cedce715143 100644 --- a/perllib/FixMyStreet/App/Form/Waste/Garden/Sacks/Choice.pm +++ b/perllib/FixMyStreet/App/Form/Waste/Garden/Sacks/Choice.pm @@ -3,6 +3,7 @@ package FixMyStreet::App::Form::Waste::Garden::Sacks::Choice; use utf8; use HTML::FormHandler::Moose::Role; +# Used by Merton only, below, to default the container choice use constant CONTAINER_GARDEN_BIN => 26; use constant CONTAINER_GARDEN_BIN_140 => 27; use constant CONTAINER_GARDEN_SACK => 28; diff --git a/perllib/FixMyStreet/Roles/Cobrand/Echo.pm b/perllib/FixMyStreet/Roles/Cobrand/Echo.pm index 90d5c3ddade..ad271fd668a 100644 --- a/perllib/FixMyStreet/Roles/Cobrand/Echo.pm +++ b/perllib/FixMyStreet/Roles/Cobrand/Echo.pm @@ -238,7 +238,7 @@ sub bin_services_for_address { $garden = 1; $garden_due = $self->waste_sub_due($schedules->{end_date}); $garden_overdue = $schedules if $_->{expired}; - my $data_obj = $self->moniker eq 'sutton' ? $_->{Service} : $servicetask; + my $data_obj = $self->moniker eq 'sutton' || $self->moniker eq 'kingston' ? $_->{Service} : $servicetask; my $data = Integrations::Echo::force_arrayref($data_obj->{Data}, 'ExtensibleDatum'); foreach (@$data) { next unless $_->{DatatypeName} eq $self->garden_echo_container_name; diff --git a/t/app/controller/waste_kingston.t b/t/app/controller/waste_kingston.t index cc986b2a6fa..36a9bd9ad78 100644 --- a/t/app/controller/waste_kingston.t +++ b/t/app/controller/waste_kingston.t @@ -1,4 +1,3 @@ -use Test::More skip_all => 'garden not yet done'; use File::Temp 'tempdir'; use JSON::MaybeXS; use Test::MockModule; @@ -32,12 +31,10 @@ sub create_contact { } create_contact({ category => 'Garden Subscription', email => 'garden@example.com'}, - { code => 'Request_Type', required => 1, automated => 'hidden_field' }, - { code => 'Subscription_Details_Quantity', required => 1, automated => 'hidden_field' }, - { code => 'Subscription_Details_Containers', required => 1, automated => 'hidden_field' }, - { code => 'Bin_Delivery_Detail_Quantity', required => 1, automated => 'hidden_field' }, - { code => 'Bin_Delivery_Detail_Container', required => 1, automated => 'hidden_field' }, - { code => 'Bin_Delivery_Detail_Containers', required => 1, automated => 'hidden_field' }, + { code => 'Paid_Container_Quantity', required => 1, automated => 'hidden_field' }, + { code => 'Paid_Container_Type', required => 1, automated => 'hidden_field' }, + { code => 'Quantity', required => 1, automated => 'hidden_field' }, + { code => 'Container_Type', required => 1, automated => 'hidden_field' }, { code => 'current_containers', required => 1, automated => 'hidden_field' }, { code => 'new_containers', required => 1, automated => 'hidden_field' }, { code => 'payment', required => 1, automated => 'hidden_field' }, @@ -45,12 +42,20 @@ create_contact({ category => 'Garden Subscription', email => 'garden@example.com { code => 'pro_rata', required => 0, automated => 'hidden_field' }, { code => 'admin_fee', required => 0, automated => 'hidden_field' }, ); -create_contact({ category => 'Cancel Garden Subscription', email => 'garden_cancel@example.com'}, - { code => 'Bin_Delivery_Detail_Quantity', required => 1, automated => 'hidden_field' }, - { code => 'Bin_Delivery_Detail_Container', required => 1, automated => 'hidden_field' }, - { code => 'Bin_Delivery_Detail_Containers', required => 1, automated => 'hidden_field' }, - { code => 'Subscription_End_Date', required => 1, automated => 'hidden_field' }, +create_contact({ category => 'Amend Garden Subscription', email => 'garden@example.com'}, + { code => 'Additional_Container_Quantity', required => 1, automated => 'hidden_field' }, + { code => 'Additional_Collection_Container_Type', required => 1, automated => 'hidden_field' }, + { code => 'Container_Ordered_Quantity', required => 1, automated => 'hidden_field' }, + { code => 'Container_Ordered_Type', required => 1, automated => 'hidden_field' }, + { code => 'current_containers', required => 1, automated => 'hidden_field' }, + { code => 'new_containers', required => 1, automated => 'hidden_field' }, + { code => 'payment', required => 1, automated => 'hidden_field' }, { code => 'payment_method', required => 1, automated => 'hidden_field' }, + { code => 'pro_rata', required => 0, automated => 'hidden_field' }, + { code => 'admin_fee', required => 0, automated => 'hidden_field' }, +); +create_contact({ category => 'Cancel Garden Subscription', email => 'garden_cancel@example.com'}, + { code => 'End_Date', required => 1, automated => 'hidden_field' }, ); package SOAP::Result; @@ -62,11 +67,11 @@ package main; sub garden_waste_no_bins { return [ { Id => 1001, - ServiceId => 405, + ServiceId => 980, ServiceName => 'Food waste collection', ServiceTasks => { ServiceTask => { Id => 400, - TaskTypeId => 2238, + TaskTypeId => 4389, ServiceTaskSchedules => { ServiceTaskSchedule => [ { ScheduleDescription => 'every other Monday', StartDate => { DateTime => '2020-01-01T00:00:00Z' }, @@ -85,7 +90,7 @@ sub garden_waste_no_bins { }, { # Eligibility for garden waste, but no task Id => 1002, - ServiceId => 409, + ServiceId => 979, ServiceName => 'Garden waste collection', ServiceTasks => '' } ]; @@ -94,11 +99,11 @@ sub garden_waste_no_bins { sub garden_waste_only_refuse_sacks { return [ { Id => 1001, - ServiceId => 405, + ServiceId => 967, ServiceName => 'Refuse collection', ServiceTasks => { ServiceTask => { Id => 400, - TaskTypeId => 2242, + TaskTypeId => 4395, ServiceTaskSchedules => { ServiceTaskSchedule => [ { ScheduleDescription => 'every other Monday', StartDate => { DateTime => '2020-01-01T00:00:00Z' }, @@ -117,7 +122,7 @@ sub garden_waste_only_refuse_sacks { }, { # Eligibility for garden waste, but no task Id => 1002, - ServiceId => 409, + ServiceId => 979, ServiceName => 'Garden waste collection', ServiceTasks => '' } ]; @@ -153,25 +158,25 @@ sub garden_waste_two_bins { sub _garden_waste_service_units { my ($bin_count, $type) = @_; - my $bin_type_id = $type eq 'sack' ? 28 : 26; + my $bin_type_id = $type eq 'sack' ? 36 : 39; return [ { Id => 1002, - ServiceId => 409, + ServiceId => 979, ServiceName => 'Garden waste collection', + Data => { ExtensibleDatum => [ { + DatatypeName => 'Container Details', + ChildData => { ExtensibleDatum => [ { + DatatypeName => 'Container Quantity', + Value => $bin_count, + }, { + DatatypeName => 'Container Type', + Value => $bin_type_id, + } ] }, + } ] }, ServiceTasks => { ServiceTask => { Id => 405, - TaskTypeId => 2247, - Data => { ExtensibleDatum => [ { - DatatypeName => 'SLWP - Containers', - ChildData => { ExtensibleDatum => [ { - DatatypeName => 'Quantity', - Value => $bin_count, - }, { - DatatypeName => 'Container Type', - Value => $bin_type_id, - } ] }, - } ] }, + TaskTypeId => 4410, ServiceTaskSchedules => { ServiceTaskSchedule => [ { ScheduleDescription => 'every other Monday', StartDate => { DateTime => '2020-03-30T00:00:00Z' }, @@ -585,7 +590,7 @@ FixMyStreet::override_config { my ( $token, $new_report, $report_id ) = get_report_from_redirect( $sent_params->{returnUrl} ); - check_extra_data_pre_confirm($new_report, type => 'Amend', quantity => 2); + check_amend_extra_data_pre_confirm($new_report); $mech->get_ok("/waste/pay_complete/$report_id/$token"); is $sent_params->{scpReference}, 12345, 'correct scpReference sent'; @@ -596,44 +601,11 @@ FixMyStreet::override_config { FixMyStreet::Script::Reports::send(); my @emails = $mech->get_email; my $body = $mech->get_text_body_from_email($emails[1]); - like $body, qr/Number of bin subscriptions: 2/; + like $body, qr/Number of additional bin subscriptions: 1/; like $body, qr/Bins to be delivered: 1/; like $body, qr/Total:.*?35.00/; }; - $echo->mock('GetServiceUnitsForObject', \&garden_waste_two_bins); - subtest 'check modify sub credit card payment reducing bin count' => sub { - set_fixed_time('2021-01-09T17:00:00Z'); # After sample data collection - $sent_params = undef; - - $mech->log_in_ok($user->email); - $mech->get_ok('/waste/12345/garden_modify'); - $mech->submit_form_ok({ with_fields => { task => 'modify' } }); - $mech->submit_form_ok({ with_fields => { current_bins => 2, bins_wanted => 1 } }); - $mech->content_contains('20.00'); - $mech->content_lacks('Continue to payment'); - $mech->content_contains('Confirm changes'); - $mech->submit_form_ok({ with_fields => { tandc => 1 } }); - $mech->content_like(qr#/waste/12345">Show upcoming#, "contains link to bin page"); - - my $new_report = FixMyStreet::DB->resultset('Problem')->search( - { user_id => $user->id }, - )->order_by('-id')->first; - - is $sent_params, undef, "no one off payment if reducing bin count"; - check_extra_data_pre_confirm($new_report, type => 'Amend', state => 'confirmed', action => 2); - is $new_report->state, 'confirmed', 'report confirmed'; - is $new_report->get_extra_field_value('payment'), '0', 'no payment if removing bins'; - is $new_report->get_extra_field_value('pro_rata'), '', 'no pro rata payment if removing bins'; - - $mech->clear_emails_ok; - FixMyStreet::Script::Reports::send(); - my @emails = $mech->get_email; - my $body = $mech->get_text_body_from_email($emails[1]); - like $body, qr/Number of bin subscriptions: 1/; - like $body, qr/Bins to be removed: 1/; - unlike $body, qr/Total:/; - }; $echo->mock('GetServiceUnitsForObject', \&garden_waste_one_bin); subtest 'renew credit card sub' => sub { @@ -749,7 +721,7 @@ FixMyStreet::override_config { my ( $token, $new_report, $report_id ) = get_report_from_redirect( $sent_params->{returnUrl} ); - check_extra_data_pre_confirm($new_report, type => 'Renew', action => 2); + check_extra_data_pre_confirm($new_report, type => 'Renew', new_bins => 0); $mech->get_ok("/waste/pay_complete/$report_id/$token"); is $sent_params->{scpReference}, 12345, 'correct scpReference sent'; @@ -794,10 +766,7 @@ FixMyStreet::override_config { )->order_by('-id')->first; is $new_report->category, 'Cancel Garden Subscription', 'correct category on report'; - is $new_report->get_extra_field_value('Subscription_End_Date'), '09/03/2021', 'cancel date set to current date'; - is $new_report->get_extra_field_value('Bin_Delivery_Detail_Container'), 26, 'correct container request bin type'; - is $new_report->get_extra_field_value('Bin_Delivery_Detail_Containers'), 2, 'correct container request action'; - is $new_report->get_extra_field_value('Bin_Delivery_Detail_Quantity'), 1, 'correct container request count'; + is $new_report->get_extra_field_value('End_Date'), '09/03/2021', 'cancel date set to current date'; is $new_report->state, 'confirmed', 'report confirmed'; $mech->clear_emails_ok; @@ -900,7 +869,7 @@ FixMyStreet::override_config { is $sent_params->{items}[0]{amount}, 4100, 'correct amount used'; is $sent_params->{items}[1]{amount}, undef, 'correct amount used'; - check_extra_data_pre_confirm($new_report, bin_type => 28); + check_extra_data_pre_confirm($new_report, bin_type_sub => 4, bin_type_new => 5, quantity => 11, new_bins => 11); $mech->get('/waste/pay/xx/yyyyyyyyyyy'); ok !$mech->res->is_success(), "want a bad response"; @@ -964,7 +933,7 @@ FixMyStreet::override_config { is $sent_params->{items}[1]{amount}, 1500, 'no admin fee'; my ( $token, $new_report, $report_id ) = get_report_from_redirect( $sent_params->{returnUrl} ); - check_extra_data_pre_confirm($new_report, type => 'Amend', quantity => 2); + check_amend_extra_data_pre_confirm($new_report); }; subtest 'refuse sacks, garden bin, cancelling' => sub { @@ -977,10 +946,7 @@ FixMyStreet::override_config { )->order_by('-id')->first; is $new_report->category, 'Cancel Garden Subscription', 'correct category on report'; - is $new_report->get_extra_field_value('Subscription_End_Date'), '09/03/2021', 'cancel date set to current date'; - is $new_report->get_extra_field_value('Bin_Delivery_Detail_Container'), 26, 'correct container request bin type'; - is $new_report->get_extra_field_value('Bin_Delivery_Detail_Containers'), 2, 'correct container request action'; - is $new_report->get_extra_field_value('Bin_Delivery_Detail_Quantity'), 1, 'correct container request count'; + is $new_report->get_extra_field_value('End_Date'), '09/03/2021', 'cancel date set to current date'; is $new_report->state, 'confirmed', 'report confirmed'; }; @@ -1010,7 +976,7 @@ FixMyStreet::override_config { my ( $token, $new_report, $report_id ) = get_report_from_redirect( $sent_params->{returnUrl} ); - check_extra_data_pre_confirm($new_report, type => 'Renew', bin_type => 28); + check_extra_data_pre_confirm($new_report, type => 'Renew', bin_type_sub => 4, bin_type_new => 5, quantity => 11, new_bins => 11); $mech->get_ok("/waste/pay_complete/$report_id/$token"); is $sent_params->{scpReference}, 12345, 'correct scpReference sent'; @@ -1036,7 +1002,7 @@ FixMyStreet::override_config { my ( $token, $new_report, $report_id ) = get_report_from_redirect( $sent_params->{returnUrl} ); - check_extra_data_pre_confirm($new_report, type => 'Amend', quantity => 1, bin_type => 28); + check_extra_data_pre_confirm($new_report, type => 'Amend', quantity => 1, bin_type_sub => 4, bin_type_new => 5, quantity => 11, new_bins => 11); $mech->get_ok("/waste/pay_complete/$report_id/$token"); is $sent_params->{scpReference}, 12345, 'correct scpReference sent'; @@ -1055,10 +1021,7 @@ FixMyStreet::override_config { )->order_by('-id')->first; is $new_report->category, 'Cancel Garden Subscription', 'correct category on report'; - is $new_report->get_extra_field_value('Subscription_End_Date'), '09/03/2021', 'cancel date set to current date'; - is $new_report->get_extra_field_value('Bin_Delivery_Detail_Container'), '', 'correct container request bin type'; - is $new_report->get_extra_field_value('Bin_Delivery_Detail_Containers'), '', 'correct container request action'; - is $new_report->get_extra_field_value('Bin_Delivery_Detail_Quantity'), '', 'correct container request count'; + is $new_report->get_extra_field_value('End_Date'), '09/03/2021', 'cancel date set to current date'; is $new_report->state, 'confirmed', 'report confirmed'; }; @@ -1111,7 +1074,7 @@ FixMyStreet::override_config { ok $id, "confirmation page contains id"; my $report = FixMyStreet::DB->resultset("Problem")->find({ id => $id }); - check_extra_data_pre_confirm($report, type => 'Amend', quantity => 2, payment_method => 'csc', state => 'confirmed'); + check_amend_extra_data_pre_confirm($report, payment_method => 'csc', state => 'confirmed'); check_extra_data_post_confirm($report, LastPayMethod => 1); is $report->name, 'Test McTest', 'non staff user name'; @@ -1121,42 +1084,6 @@ FixMyStreet::override_config { $report->delete; # Otherwise next test sees this as latest }; - $echo->mock('GetServiceUnitsForObject', \&garden_waste_two_bins); - subtest 'check modify sub staff reducing bin count' => sub { - set_fixed_time('2021-01-09T17:00:00Z'); - - $mech->get_ok('/waste/12345/garden_modify'); - $mech->submit_form_ok({ with_fields => { task => 'modify' } }); - $mech->submit_form_ok({ with_fields => { - current_bins => 2, - bins_wanted => 1, - name => 'A user', - email => 'test@example.net', - } }); - $mech->content_contains('20.00'); - $mech->content_lacks('Continue to payment'); - $mech->content_contains('Confirm changes'); - $mech->submit_form_ok({ with_fields => { tandc => 1 } }); - $mech->content_like(qr#/waste/12345">Show upcoming#, "contains link to bin page"); - - $mech->content_lacks($staff_user->email); - - my $content = $mech->content; - my ($id) = ($content =~ m#reference number\s*
.*?(\d+)<#); - my $new_report = FixMyStreet::DB->resultset("Problem")->find({ id => $id }); - - is $new_report->category, 'Garden Subscription', 'correct category on report'; - is $new_report->title, 'Garden Subscription - Amend', 'correct title on report'; - is $new_report->get_extra_field_value('payment_method'), 'csc', 'correct payment method on report'; - is $new_report->state, 'confirmed', 'report confirmed'; - is $new_report->get_extra_field_value('Subscription_Details_Quantity'), 1, 'correct bin count'; - is $new_report->get_extra_field_value('Bin_Delivery_Detail_Containers'), 2, 'correct container request action'; - is $new_report->get_extra_field_value('Bin_Delivery_Detail_Quantity'), 1, 'correct container request count'; - is $new_report->get_extra_metadata('contributed_by'), $staff_user->id; - is $new_report->get_extra_metadata('contributed_as'), 'another_user'; - is $new_report->get_extra_field_value('payment'), '0', 'no payment if removing bins'; - is $new_report->get_extra_field_value('pro_rata'), '', 'no pro rata payment if removing bins'; - }; $echo->mock('GetServiceUnitsForObject', \&garden_waste_one_bin); subtest 'cancel staff sub' => sub { @@ -1168,7 +1095,7 @@ FixMyStreet::override_config { my $new_report = FixMyStreet::DB->resultset('Problem')->order_by('-id')->first; is $new_report->category, 'Cancel Garden Subscription', 'correct category on report'; - is $new_report->get_extra_field_value('Subscription_End_Date'), '09/03/2021', 'cancel date set to current date'; + is $new_report->get_extra_field_value('End_Date'), '09/03/2021', 'cancel date set to current date'; is $new_report->state, 'confirmed', 'report confirmed'; is $new_report->get_extra_metadata('contributed_by'), $staff_user->id; is $new_report->get_extra_metadata('contributed_as'), 'anonymous_user'; @@ -1266,7 +1193,7 @@ FixMyStreet::override_config { my ( $token, $new_report, $report_id ) = get_report_from_redirect( $sent_params->{returnUrl} ); - check_extra_data_pre_confirm($new_report, type => 'Amend', quantity => 2); + check_amend_extra_data_pre_confirm($new_report); $mech->get_ok("/waste/pay_complete/$report_id/$token"); is $sent_params->{scpReference}, 12345, 'correct scpReference sent'; @@ -1287,7 +1214,7 @@ FixMyStreet::override_config { )->order_by('-id')->first; is $new_report->category, 'Cancel Garden Subscription', 'correct category on report'; - is $new_report->get_extra_field_value('Subscription_End_Date'), '09/03/2021', 'cancel date set to current date'; + is $new_report->get_extra_field_value('End_Date'), '09/03/2021', 'cancel date set to current date'; is $new_report->state, 'confirmed', 'report confirmed'; }; @@ -1341,11 +1268,11 @@ FixMyStreet::override_config { $mech->content_contains('"a user"'); $mech->content_contains(1000000002); $mech->content_contains('a_user@example.net'); - $mech->content_contains('csc,54321,2000,,0,26,1,1'); # Method/ref/fee/fee/fee/bin/current/sub + $mech->content_contains('csc,54321,2000,,0,1,1,1'); # Method/ref/fee/fee/fee/bin/current/sub $mech->content_contains('"a user 2"'); $mech->content_contains('a_user_2@example.net'); $mech->content_contains('unconfirmed'); - $mech->content_contains('4000,,1500,26,1,2'); # Fee/fee/fee/bin/current/sub + $mech->content_contains('4000,,1500,1,1,2'); # Fee/fee/fee/bin/current/sub }; subtest 'check CSV pregeneration' => sub { @@ -1355,11 +1282,11 @@ FixMyStreet::override_config { $mech->content_contains('"a user"'); $mech->content_contains(1000000002); $mech->content_contains('a_user@example.net'); - $mech->content_contains('csc,54321,2000,,0,26,1,1'); # Method/ref/fee/fee/fee/bin/current/sub + $mech->content_contains('csc,54321,2000,,0,1,1,1'); # Method/ref/fee/fee/fee/bin/current/sub $mech->content_contains('"a user 2"'); $mech->content_contains('a_user_2@example.net'); $mech->content_contains('unconfirmed'); - $mech->content_contains('4000,,1500,26,1,2'); # Fee/fee/fee/bin/current/sub + $mech->content_contains('4000,,1500,1,1,2'); # Fee/fee/fee/bin/current/sub }; subtest 'check new sub price changes at fixed time' => sub { @@ -1605,8 +1532,8 @@ sub check_extra_data_pre_confirm { state => 'unconfirmed', quantity => 1, new_bins => 1, - action => 1, - bin_type => 26, + bin_type_sub => 1, + bin_type_new => 2, payment_method => 'credit_card', @_ ); @@ -1614,12 +1541,11 @@ sub check_extra_data_pre_confirm { is $report->category, 'Garden Subscription', 'correct category on report'; is $report->title, "Garden Subscription - $params{type}", 'correct title on report'; is $report->get_extra_field_value('payment_method'), $params{payment_method}, 'correct payment method on report'; - is $report->get_extra_field_value('Subscription_Details_Quantity'), $params{quantity}, 'correct bin count'; - is $report->get_extra_field_value('Subscription_Details_Containers'), $params{bin_type}, 'correct bin type'; + is $report->get_extra_field_value('Paid_Container_Quantity'), $params{quantity}, 'correct bin count'; + is $report->get_extra_field_value('Paid_Container_Type'), $params{bin_type_sub}, 'correct bin type'; if ($params{new_bins}) { - is $report->get_extra_field_value('Bin_Delivery_Detail_Container'), $params{bin_type}, 'correct container request bin type'; - is $report->get_extra_field_value('Bin_Delivery_Detail_Containers'), $params{action}, 'correct container request action'; - is $report->get_extra_field_value('Bin_Delivery_Detail_Quantity'), $params{new_bins}, 'correct container request count'; + is $report->get_extra_field_value('Container_Type'), $params{bin_type_new}, 'correct container request bin type'; + is $report->get_extra_field_value('Quantity'), $params{new_bins}+1, 'correct container request count'; } is $report->state, $params{state}, 'report state correct'; if ($params{state} eq 'unconfirmed') { @@ -1627,6 +1553,33 @@ sub check_extra_data_pre_confirm { } } +sub check_amend_extra_data_pre_confirm { + my $report = shift; + ok $report, "report passed to check_extra_data_pre_confirm"; + return unless $report; + + my %params = ( + state => 'unconfirmed', + quantity => 1, + new_bins => 1, + bin_type_sub => 1, + bin_type_new => 2, + payment_method => 'credit_card', + @_ + ); + $report->discard_changes; + is $report->category, 'Amend Garden Subscription', 'correct category on report'; + is $report->title, "Garden Subscription - Amend", 'correct title on report'; + is $report->get_extra_field_value('payment_method'), $params{payment_method}, 'correct payment method on report'; + is $report->get_extra_field_value('Additional_Container_Quantity'), $params{quantity}, 'correct bin count'; + is $report->get_extra_field_value('Additional_Collection_Container_Type'), $params{bin_type_sub}, 'correct bin type'; + if ($params{new_bins}) { + is $report->get_extra_field_value('Container_Ordered_Type'), $params{bin_type_new}, 'correct container request bin type'; + is $report->get_extra_field_value('Container_Ordered_Quantity'), $params{new_bins}+1, 'correct container request count - one more'; + } + is $report->state, $params{state}, 'report state correct'; +} + sub check_extra_data_post_confirm { my $report = shift; my %params = ( diff --git a/templates/email/default/waste/_garden_data.html b/templates/email/default/waste/_garden_data.html index f12ac896760..9339604f01d 100644 --- a/templates/email/default/waste/_garden_data.html +++ b/templates/email/default/waste/_garden_data.html @@ -25,6 +25,7 @@ END; IF cobrand.moniker == 'sutton'; SET sack_quant = 1; +ELSIF cobrand.moniker == 'kingston'; SET sack_quant = 1; ELSE; SET sack_quant = quantity; END; SET pro_rata = report.get_extra_field_value('pro_rata'); diff --git a/templates/web/base/admin/reports/_edit_waste.html b/templates/web/base/admin/reports/_edit_waste.html index 0ab8f69b546..3c70706fd4b 100644 --- a/templates/web/base/admin/reports/_edit_waste.html +++ b/templates/web/base/admin/reports/_edit_waste.html @@ -171,7 +171,7 @@

Subscription information

[% END %] -[% IF (c.cobrand.moniker == 'sutton') AND problem.get_extra_field_value('Paid_Container_Type') %] +[% IF (c.cobrand.moniker == 'sutton' || c.cobrand.moniker == 'kingston') AND problem.get_extra_field_value('Paid_Container_Type') %]

Subscription information