bulk DID order/inventory improvements, RT11291
[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                             'custnum',
16                             { type => 'tablebreak-tr-title',
17                               value => 'Order Items',
18                             },
19                             { 'field' => 'orderitemnum',
20                               'type' => 'did_order_item',
21                               'o2m_table' => 'did_order_item',
22                               'm2_label' => 'Item',
23                               'm2_error_callback' => $m2_error_callback,
24                             },
25                             #'msa',
26                             #{ field => 'latanum',
27                             #  type => 'select-table',
28                             #  name_col => 'description',
29                             #  table => 'lata',
30                             #  disable_empty => 1,
31                             #  label_showkey => 1,
32                             #},
33                             #'rate_center',
34                             #{ field => 'state',
35                             #  type => 'select-state',
36                             #  country => 'US',
37                             #},
38                             #'quantity',
39                           ],
40               'labels' => { 
41                             'ordernum'        => 'Order',
42                             'vendornum'       => 'Vendor',
43                             'vendor_order_id' => 'Vendor Order #',
44                             'custnum'         => 'Customer',
45                             #'msa'             => 'MSA',
46                             #'latanum'         => 'LATA',
47                             #'rate_center'     => 'Rate Center',
48                             #'state'           => 'State',
49                             #'quantity'        => 'Quantity',
50                             'confirmed'       => 'Confirmation Date',
51                             'orderitemnum'     => 'Item',
52                           },
53               'viewall_dir' => 'browse',
54               'table' => 'did_order',
55               'name' => 'Bulk DID Order',
56               'field_callback' => $field_callback,
57            )
58           
59 %>
60 <%init>
61
62 die "access denied"
63   unless $FS::CurrentUser::CurrentUser->access_right('Import');
64
65
66 my $field_callback = sub {
67   my ($cgi, $object, $field_hashref ) = @_;
68   if ($object->ordernum) {
69     $field_hashref->{type} = 'text'
70         if $field_hashref->{field} eq 'vendor_order_id';
71     $field_hashref->{type} = 'input-date-field'
72         if $field_hashref->{field} eq 'confirmed';
73   }
74 };
75
76 my $m2_error_callback = sub {
77   my($cgi, $object) = @_;
78
79   #process_o2m fields in process/did_order.html
80   my @fields = qw( msa npa latanum rate_center state quantity );
81   my @gfields = ( '', map "_$_", @fields );
82
83   map {
84         if ( /^orderitemnum(\d+)$/ ) {
85           my $num = $1;
86           if ( grep $cgi->param("orderitemnum$num$_"), @gfields ) {
87             my $x = new FS::did_order_item {
88               'orderitemnum' => scalar($cgi->param("orderitemnum$num")),
89               map { $_ => scalar($cgi->param("orderitemnum${num}_$_")) } @fields,
90             };
91             $x;
92           } else {
93             ();
94           }
95         } else {
96           ();
97         }
98       }
99       $cgi->param;
100 };
101
102
103 </%init>