add conditions for customer cancelled packages, RT#42043
[freeside.git] / httemplate / misc / xmlhttp-ticket-update.html
1 <% encode_json($return) %>\
2 <%init>
3
4 my $id       = $cgi->param('id');
5 my $starts   = $cgi->param('starts');
6 my $due      = $cgi->param('due');
7 my $username = $cgi->param('username');
8
9 my $ticket = FS::TicketSystem->get_ticket_object( \%session, ticket_id=>$id );
10
11 #hmm, this should happen in a single transaction and either commit or rollback
12
13 my $return;
14 if ( $ticket ) {
15
16   my($orv, $omsg) = $ticket->SetOwner( $username );
17   $orv = 1 if ! $orv && $omsg =~ /already own/i;
18
19   if ( $orv ) {
20
21     my $date = RT::Date->new( $session{CurrentUser} );
22     $date->Set( Format=>'unix', Value=>$starts, );
23     my($srv, $smsg) = $ticket->SetStarts( $date->ISO );
24     $srv = 1 if ! $srv && $smsg =~ /already the current value/i;
25
26     my $ddate;
27     unless ( ! $srv ) {
28       $ddate = RT::Date->new( $session{CurrentUser} );
29       $ddate->Set( Format=>'unix', Value=>$due, );
30       my($drv, $dmsg) = $ticket->SetDue( $ddate->ISO );
31       #XXX lame
32     }
33
34     if ( $srv ) {
35
36       my ($sm, $sh) = ( $date->Localtime('user'))[1,2];
37       my ($em, $eh) = ($ddate->Localtime('user'))[1,2];
38
39       #false laziness w/CalendarSlotSchedule and CalendarDaySchedule
40       my %hash = $m->comp('/rt/Ticket/Elements/Customers', Ticket => $ticket);
41       my @cust_main = values( %{$hash{cust_main}} );
42
43       $return = { 'error'       => '',
44                   #'starts'      => $starts,
45                   #'due'         => $due,
46                   #'username'    => $username,
47                                    #false laziness w/CalendarSlotSchedule
48                   'sched_label' =>
49                      FS::sched_avail::pretty_time($sh*60+$sm). '-'.
50                      FS::sched_avail::pretty_time($eh*60+$em). ': '.
51                      encode_entities($cust_main[0]->_FreesideURILabel),
52                 };
53     } else {
54       $return = { 'error' => $smsg };
55     }
56
57   } else {
58     $return = { 'error' => $omsg };
59   }
60
61 } else {
62   $return = { 'error' => 'Unknown ticket id' };
63 }
64
65 </%init>