invoice_sections_with_taxes per-agent, RT#79636
[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 $curowner = $ticket->OwnerObj->Name;
17   my($orv, $omsg);
18   if (( $curowner eq $FS::CurrentUser::CurrentUser->username ) or ( $curowner eq 'nobody' )) {
19     ($orv, $omsg) = $ticket->SetOwner( $username );
20   } else {
21     ($orv, $omsg) = $ticket->SetOwner( $username, 'Steal' );
22   }
23   $orv = 1 if ! $orv && $omsg =~ /already own/i;
24
25   if ( $orv ) {
26
27     my $date = RT::Date->new( $session{CurrentUser} );
28     $date->Set( Format=>'unix', Value=>$starts, );
29     my($srv, $smsg) = $ticket->SetStarts( $date->ISO );
30     $srv = 1 if ! $srv && $smsg =~ /already the current value/i;
31
32     my $ddate;
33     unless ( ! $srv ) {
34       $ddate = RT::Date->new( $session{CurrentUser} );
35       $ddate->Set( Format=>'unix', Value=>$due, );
36       my($drv, $dmsg) = $ticket->SetDue( $ddate->ISO );
37       #XXX lame
38     }
39
40     if ( $srv ) {
41
42       my ($sm, $sh) = ( $date->Localtime('user'))[1,2];
43       my ($em, $eh) = ($ddate->Localtime('user'))[1,2];
44
45       #false laziness w/CalendarSlotSchedule and CalendarDaySchedule
46       my %hash = $m->comp('/rt/Ticket/Elements/Customers', Ticket => $ticket);
47       my @cust_main = values( %{$hash{cust_main}} );
48
49       my $timelabel = FS::sched_avail::pretty_time($sh*60+$sm). '-'.
50                       FS::sched_avail::pretty_time($eh*60+$em);
51       my $titlelabel = encode_entities($cust_main[0]->_FreesideURILabel);
52
53       $return = { 'error'       => '',
54                   #'starts'      => $starts,
55                   #'due'         => $due,
56                   #'username'    => $username,
57                                    #false laziness w/CalendarSlotSchedule
58                   'sched_label' => $timelabel . ': ' . $titlelabel,
59                   'sched_label_time' => $timelabel,
60                   'sched_label_title' => $titlelabel,
61                 };
62     } else {
63       $return = { 'error' => $smsg };
64     }
65
66   } else {
67     $return = { 'error' => $omsg };
68   }
69
70 } else {
71   $return = { 'error' => 'Unknown ticket id' };
72 }
73
74 </%init>