Billing_ThirdParty.pm, missing file
[freeside.git] / httemplate / edit / cust_main / first_pkg / select-part_pkg.html
1 <& /elements/xmlhttp.html,
2               'url'  => $url_prefix.'misc/svc_acct-domains.cgi',
3               'subs' => [ $opt{'prefix'}. 'get_domains' ],
4 &>
5
6 <& /elements/xmlhttp.html,
7               'url'  => $url_prefix.'misc/part_svc-columns.cgi',
8               'subs' => [ $opt{'prefix'}. 'get_part_svc' ],
9 &>
10
11 <INPUT TYPE="hidden" NAME="svcdb" VALUE="">
12
13 <SCRIPT TYPE="text/javascript">
14
15   function selopt(what,value,text,selected) {
16     var optionName = new Option(text, value, false, selected);
17     var length = what.length;
18     what.options[length] = optionName;
19   }
20
21   var pkgpart_svcpart2svcdb = {
22 %   foreach my $pkgpart ( map $_->pkgpart, @part_pkg ) {
23       "<% $pkgpart_svcpart{$pkgpart} %>":"<% $svcdb{$pkgpart} %>",
24 %   }
25     '':''
26   };
27
28   function <% $opt{'prefix'} %>pkgpart_svcpart_changed_too(what,selected) {
29
30     <% $opt{'onchange'} %>;
31
32     pkgpart_svcpart = what.options[what.selectedIndex].value;
33
34     var svcdb = pkgpart_svcpart2svcdb[pkgpart_svcpart];
35
36     what.form.svcdb.value = svcdb;
37
38     if ( svcdb == 'svc_acct' ) {
39
40       // go get the new domains
41       function <% $opt{'prefix'} %>update_domains(domains) {
42
43         // blank the current domain list
44         for ( var i = what.form.<% $opt{'prefix'} %>domsvc.length; i >= 0; i-- )
45             what.form.<% $opt{'prefix'} %>domsvc.options[i] = null;
46
47         // add the new domains
48         var domainArray = eval('(' + domains + ')' );
49         for ( var s = 0; s < domainArray.length; s=s+2 ) {
50             var domainLabel = domainArray[s+1];
51             if ( domainLabel == "" )
52                 domainLabel = '(n/a)';
53             selopt( what.form.<% $opt{'prefix'} %>domsvc,
54                     domainArray[s],
55                     domainLabel,
56                     (domainArray[s] == selected) ? true : false
57                   );
58         }
59
60       }
61
62       <% $opt{'prefix'} %>get_domains( pkgpart_svcpart,
63                                        <% $opt{'prefix'} %>update_domains
64                                      );
65
66     } else if ( svcdb == 'svc_phone' ) {
67
68       function <% $opt{'prefix'} %>update_svc_phone(part_svc_column) {
69         var colArray = eval('(' + part_svc_column + ')' );
70         for ( var s = 0; s < colArray.length; s=s+3 ) {
71           var name  = colArray[s];
72           var flag  = colArray[s+1];
73           var value = colArray[s+2];
74           var td_label = document.getElementById(name+'_label_td');
75           var td       = document.getElementById(name+'_td');
76           var input    = document.getElementById(name);
77           if ( flag == 'D' ) {
78             if ( ! input.value ) { input.value = value; }
79             td_label.style.display = ''
80             td.style.display = ''
81           } else if ( flag == 'F' ) {
82             input.value = value;
83             td_label.style.display = 'none'
84             td.style.display = 'none'
85           } else {
86             td_label.style.display = ''
87             td.style.display = ''
88           }
89         }
90       }
91
92       <% $opt{'prefix'} %>get_part_svc( pkgpart_svcpart,
93                                         <% $opt{'prefix'} %>update_svc_phone
94                                       );
95
96     }
97
98   }
99
100 </SCRIPT>
101
102 <& /elements/selectlayers.html,
103               'field'        => $opt{'prefix'}. 'pkgpart_svcpart',
104               'curr_value'   => $opt{pkgpart_svcpart},
105               'options'      => \@options,
106               'labels'       => \%labels,
107               'html_between' => '</TD></TR></TABLE>',
108               'onchange'     => $opt{'prefix'}. 'pkgpart_svcpart_changed_too(what,0)',
109               'layer_callback' => $layer_callback,
110               'layermap'       => \%layermap,
111 &>
112
113 <SCRIPT TYPE="text/javascript">
114   pkgpart_svcpart_changed_too( document.CustomerForm.pkgpart_svcpart,
115                                <% $opt{saved_domsvc} %>
116                              );
117 </SCRIPT>
118
119 <%init>
120
121 my %opt = @_;
122
123 foreach my $opt (qw( svc_part pkgparts saved_pkgpart saved_domsvc prefix)) {
124   $opt{$_} = '' unless exists($opt{$_}) && defined($opt{$_});
125 }
126 $opt{saved_domsvc} = 0 unless $opt{saved_domsvc};
127
128 my $url_prefix = $opt{'relurls'} ? '' : $p;
129
130 my @part_pkg  = @{ $opt{'part_pkg'}  };
131 my @first_svc = @{ $opt{'first_svc'} || [] };
132
133 my %pkgpart_svcpart = ();
134 my %svcdb = ();
135 my %layermap = ();
136 foreach my $part_pkg ( @part_pkg ) {
137   my $pkgpart = $part_pkg->pkgpart;
138   my $pkgpart_svcpart         = $pkgpart. "_". $part_pkg->svcpart(\@first_svc);
139   $pkgpart_svcpart{$pkgpart}  = $pkgpart_svcpart;
140   $svcdb{$pkgpart}            = $part_pkg->part_svc(\@first_svc)->svcdb;
141   $layermap{$pkgpart_svcpart} = $svcdb{$pkgpart};
142 }
143
144 my @options = ();
145 push @options, '' unless $opt{'disable_empty'};
146 push @options, map $pkgpart_svcpart{ $_->pkgpart }, @part_pkg;
147 my %labels = ( '' => ( $opt{'empty_label'} || '(none)' ),
148                map { $pkgpart_svcpart{ $_->pkgpart } => $_->pkg_comment }
149                    @part_pkg
150              );
151
152 my $layer_callback = sub {
153   my $layer = shift;
154   my $svcdb = $layer;
155
156   return '' unless $svcdb; 
157
158   #full path cause we're being slung around as a coderef (mason closures?)
159   include("/edit/cust_main/first_pkg/$svcdb.html", %opt, );
160 };
161
162 </%init>