summaryrefslogtreecommitdiff
path: root/httemplate/edit/prospect_main.html
blob: c4123a078cd3b5bd06cbfe2b25a39fb6bb4f22a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<% include('elements/edit.html',
     'name_singular'   => 'prospect',
     'table'           => 'prospect_main',
     'labels'          => { 'prospectnum' => 'Prospect',
                            'agentnum'    => 'Agent',
                            'company'     => 'Company',
                            'contactnum'  => 'Contact',
                          },
     'fields'          => [
       { 'field'       => 'agentnum',
         'type'        => 'select-agent',
         'empty_label' => 'Select agent',
       },
       { 'field'   => 'company',
         'type'   => 'text',
         'size'    => 50,
       },
       { 'field'             => 'contactnum',
         'type'              => 'contact',
         'colspan'           => 6,
         #actually o2m, but this seems to be working for edit so far
         'm2name_table'      => 'contact',
         'm2name_namecol'    => 'contactnum',
         'm2_label'          => 'Contact',
         'm2_error_callback' => sub { my($cgi, $object) = @_; (); }, #XXX
       },
       { 'field'       => 'locationnum',
         'type'        => 'select-cust_location',
         'empty_label' => 'No address',
       },
     ],
     'edit_callback'   => $edit_callback,
     'error_callbacck' => $error_callback,
     'agent_virt'      => 1,
   )
%>
<%init>

my $curuser = $FS::CurrentUser::CurrentUser;

my $prospectnum;
if ( $cgi->param('error') ) {
  $prospectnum = scalar($cgi->param('prospectnum'));

  die "access denied"
    unless $curuser->access_right(($prospectnum ? 'Edit' : 'New'). ' prospect');

} elsif ( $cgi->keywords ) { #editing

  die "access denied"
    unless $curuser->access_right('Edit prospect');

} else { #new prospect 

  die "access denied"
    unless $curuser->access_right('New prospect');

}

my $edit_callback = sub {
  #my( $cgi, $prospect_main, $fields_listref, $opt_hashref ) = @_;
  my( $cgi, $prospect_main ) = @_;
  my @cust_location =
    qsearch('cust_location', { 'prospectnum' => $prospect_main->prospectnum } );
  die 'multiple locations for prospect '. $prospect_main->prospectnum
    if scalar(@cust_location) > 1;
  $prospect_main->set('locationnum', $cust_location[0]->locationnum)
    if scalar(@cust_location);
  #warn 'prospect_main.locationnum '.$prospect_main->get('locationnum');
};

my $error_callback = sub {
  #my( $cgi, $prospect_main, $fields_listref, $opt_hashref ) = @_;
  my( $cgi, $prospect_main ) = @_;
  $cgi->param('locationnum') =~ /^(\-?\d*)$/
    or die 'illegal locationnum '. $cgi->param('locationnum');
  my $locationnum = $1;
  $prospect_main->set('locationnum', $locationnum);
};

my @agentnums = $FS::CurrentUser::CurrentUser->agentnums;

</%init>