optional better visibility for invoicing email field, RT12944
[freeside.git] / httemplate / edit / did_order.html
1 <% include( 'elements/edit.html',
2               'fields' => [
3                             { field => 'vendornum',
4                               type => 'select-table',
5                               name_col => 'vendorname',
6                               table => 'did_vendor',
7                               disable_empty => 1,
8                             },
9                             { field => 'vendor_order_id',
10                               type => 'hidden',
11                             },
12                             { field => 'confirmed',
13                               type => 'hidden',
14                             },
15                             { field => 'stock_or_customer',
16                               type => 'radio',
17                               options => [ 'Stock', 'Customer', ],
18                               onchange => 'stockcust_changed',
19                               curr_value_callback => $stock_or_customer,
20                             },
21                             { field => 'custnum',
22                               type => 'search-cust_main',
23                             },
24                             { type => 'tablebreak-tr-title',
25                               value => 'Order Items',
26                             },
27                             { 'field' => 'orderitemnum',
28                               'type' => 'did_order_item',
29                               'o2m_table' => 'did_order_item',
30                               'm2_label' => 'Item',
31                               'm2_error_callback' => $m2_error_callback,
32                             },
33                         ],
34               'labels' => { 
35                             'ordernum'        => 'Order',
36                             'vendornum'       => 'Vendor',
37                             'vendor_order_id' => 'Vendor Order #',
38                             'custnum'         => '',
39                             'confirmed'       => 'Confirmation Date',
40                             'orderitemnum'     => 'Item',
41                           },
42               'viewall_dir' => 'browse',
43               'table' => 'did_order',
44               'name' => 'Bulk DID Order',
45               'field_callback' => $field_callback,
46               'html_bottom' => $javascript,
47               'body_etc'        => 'onLoad="stockcust_changed()"',
48            )
49 %>
50 <%init>
51
52 die "access denied"
53   unless $FS::CurrentUser::CurrentUser->access_right('Import');
54
55 my $field_callback = sub {
56   my ($cgi, $object, $field_hashref ) = @_;
57   if ($object->ordernum) {
58     $field_hashref->{type} = 'text'
59         if $field_hashref->{field} eq 'vendor_order_id';
60     $field_hashref->{type} = 'input-date-field'
61         if $field_hashref->{field} eq 'confirmed';
62   }
63 };
64
65 my $m2_error_callback = sub {
66   my($cgi, $object) = @_;
67
68   #process_o2m fields in process/did_order.html
69   my @fields = qw( msanum npa latanum ratecenternum state quantity );
70   my @gfields = ( '', map "_$_", @fields );
71
72   map {
73         if ( /^orderitemnum(\d+)$/ ) {
74           my $num = $1;
75           if ( grep $cgi->param("orderitemnum$num$_"), @gfields ) {
76             my $x = new FS::did_order_item {
77               'orderitemnum' => scalar($cgi->param("orderitemnum$num")),
78               map { $_ => scalar($cgi->param("orderitemnum${num}_$_")) } @fields,
79             };
80             $x;
81           } else {
82             ();
83           }
84         } else {
85           ();
86         }
87       }
88       $cgi->param;
89 };
90
91 my $stock_or_customer = sub{
92     my($cgi,$object,$field) = @_;
93     return 'Customer' if $object->custnum;
94     'Stock';
95 };
96
97 my $javascript = <<END;
98     <SCRIPT TYPE="text/javascript">
99         function stockcust_changed() {
100             var f = document.edit_topform;
101             var custnum = f.custnum;
102             var custnum_search = f.custnum_search;
103             var custnum_select = f.custnum_select;
104             if ( f.stock_or_customer_Stock.checked ) {
105                 custnum_search.disabled = true;
106                 custnum_select.disabled = true;
107             }
108             else if ( f.stock_or_customer_Customer.checked ) {
109                 custnum_search.disabled = false;
110                 custnum_select.disabled = false;
111             }
112             custnum.value = '';
113         }
114
115         /* o2m or something else is broken, can't put this in the actual
116             component because random JS and other crap is rendered 
117             onto the final output page */
118         function ratecenter_changed(rc) {
119             var idbase = rc.id.substring(0,rc.id.indexOf('_'));
120             var div = document.getElementById(idbase+'_rc_div');
121             var input = document.getElementById(idbase+'_rc_new');
122             if(rc.options[rc.selectedIndex].value == '0') {
123                 div.style.display = 'inline';
124             }
125             else {
126                 div.style.display = 'none';
127             }
128             input.value = '';
129         }
130     </SCRIPT>
131 END
132
133 </%init>