+my $field_callback = sub {
+ my ($cgi, $object, $field_hashref ) = @_;
+ if ($object->ordernum) {
+ $field_hashref->{type} = 'text'
+ if $field_hashref->{field} eq 'vendor_order_id';
+ $field_hashref->{type} = 'input-date-field'
+ if $field_hashref->{field} eq 'confirmed';
+ }
+};
+
+my $m2_error_callback = sub {
+ my($cgi, $object) = @_;
+
+ #process_o2m fields in process/did_order.html
+ my @fields = qw( msanum npa latanum ratecenternum state quantity );
+ my @gfields = ( '', map "_$_", @fields );
+
+ map {
+ if ( /^orderitemnum(\d+)$/ ) {
+ my $num = $1;
+ if ( grep $cgi->param("orderitemnum$num$_"), @gfields ) {
+ my $x = new FS::did_order_item {
+ 'orderitemnum' => scalar($cgi->param("orderitemnum$num")),
+ map { $_ => scalar($cgi->param("orderitemnum${num}_$_")) } @fields,
+ };
+ $x;
+ } else {
+ ();
+ }
+ } else {
+ ();
+ }
+ }
+ $cgi->param;
+};
+
+my $stock_or_customer = sub{
+ my($cgi,$object,$field) = @_;
+ return 'Customer' if $object->custnum;
+ 'Stock';
+};
+
+my $javascript = <<END;
+ <SCRIPT TYPE="text/javascript">
+ function stockcust_changed() {
+ var f = document.edit_topform;
+ var custnum = f.custnum;
+ var custnum_search = f.custnum_search;
+ var custnum_select = f.custnum_select;
+ if ( f.stock_or_customer_Stock.checked ) {
+ custnum_search.disabled = true;
+ custnum_select.disabled = true;
+ custnum.value = '';
+ }
+ else if ( f.stock_or_customer_Customer.checked ) {
+ custnum_search.disabled = false;
+ custnum_select.disabled = false;
+ }
+ }
+
+ /* o2m or something else is broken, can't put this in the actual
+ component because random JS and other crap is rendered
+ onto the final output page */
+ function ratecenter_changed(rc) {
+ var idbase = rc.id.substring(0,rc.id.indexOf('_'));
+ var div = document.getElementById(idbase+'_rc_div');
+ var input = document.getElementById(idbase+'_rc_new');
+ if(rc.options[rc.selectedIndex].value == '0') {
+ div.style.display = 'inline';
+ }
+ else {
+ div.style.display = 'none';
+ }
+ input.value = '';
+ }
+ </SCRIPT>
+END
+