From 2579dce95f2a41d7a162404f193545e9601c374d Mon Sep 17 00:00:00 2001 From: levinse Date: Mon, 11 Apr 2011 23:00:03 +0000 Subject: [PATCH] improvements to bulk DID orders, RT11291 --- FS/FS/Schema.pm | 2 +- FS/FS/did_order.pm | 11 ++++ httemplate/browse/did_order.html | 28 ++++++++-- httemplate/edit/did_order.html | 94 ++++++++++++++++++-------------- httemplate/edit/process/did_order.html | 18 +++--- httemplate/elements/did_order_item.html | 46 ++++++++++++---- httemplate/misc/did_order_confirm.html | 42 ++++++++++++++ httemplate/misc/did_order_confirmed.html | 37 +++++++++++++ 8 files changed, 210 insertions(+), 68 deletions(-) create mode 100644 httemplate/misc/did_order_confirm.html create mode 100644 httemplate/misc/did_order_confirmed.html diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index 803cb47ad..f1814b3d5 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -3141,7 +3141,7 @@ sub tables_hashref { 'msa', 'varchar', 'NULL', $char_d, '', '', 'npa', 'int', 'NULL', '', '', '', 'latanum', 'int', 'NULL', '', '', '', - 'rate_center', 'varchar', 'NULL', $char_d, '', '', + 'ratecenter', 'varchar', 'NULL', $char_d, '', '', 'state', 'char', 'NULL', 2, '', '', 'quantity', 'int', '', '', '', '', ], diff --git a/FS/FS/did_order.pm b/FS/FS/did_order.pm index f46d72bf8..adc965f91 100644 --- a/FS/FS/did_order.pm +++ b/FS/FS/did_order.pm @@ -138,6 +138,17 @@ sub did_order_item { qsearch( 'did_order_item', { 'ordernum' => $self->ordernum } ); } +=item cust_main + +Returns the cust_main (see L), if any, associated with this bulk DID order. + +=cut + +sub cust_main { + my $self = shift; + return '' unless $self->custnum; + qsearchs('cust_main', { 'custnum' => $self->custnum } ); +} =back diff --git a/httemplate/browse/did_order.html b/httemplate/browse/did_order.html index e844169b3..570b78475 100644 --- a/httemplate/browse/did_order.html +++ b/httemplate/browse/did_order.html @@ -35,21 +35,37 @@ my $display_date = sub { time2str($date_format, $date); }; -my $header = [ '#', 'Vendor',' Vendor Order #', - 'Submitted', 'Confirmed', 'Customer', 'Received', - ]; +my $header = [ '#', 'Vendor',' Vendor Order #', 'Submitted', 'Confirmed', + 'Customer', 'Received', ]; my $fields = [ sub { my $did_order = shift; $did_order->ordernum; }, 'vendorname', 'vendor_order_id', sub { &$display_date(shift->submitted); }, - sub { &$display_date(shift->confirmed); }, - 'custnum', + sub { + my $did_order = shift; + my $ordernum = $did_order->ordernum; + return &$display_date($did_order->confirmed) if $did_order->confirmed; + include( '/elements/popup_link.html', + { 'action' => "${p}misc/did_order_confirm.html?ordernum=$ordernum", + 'label' => 'Confirm Bulk DID Order', + 'actionlabel' => 'Confirm Bulk DID Order', + 'width' => 480, + 'height' => 300, + } + ) + }, + sub { + my $did_order = shift; + my $cust_main = $did_order->cust_main; + return "Stock" unless $cust_main; + "".$cust_main->name.""; + }, sub { my $did_order = shift; my $ordernum = $did_order->ordernum; return &$display_date($did_order->received) - if $did_order->received; + if $did_order->received; "Upload Received"; }, ]; diff --git a/httemplate/edit/did_order.html b/httemplate/edit/did_order.html index 25e38c72e..f20e34708 100644 --- a/httemplate/edit/did_order.html +++ b/httemplate/edit/did_order.html @@ -7,69 +7,57 @@ disable_empty => 1, }, { field => 'vendor_order_id', - type => 'hidden', - }, + type => 'hidden', + }, { field => 'confirmed', type => 'hidden', }, - 'custnum', - { type => 'tablebreak-tr-title', - value => 'Order Items', - }, - { 'field' => 'orderitemnum', - 'type' => 'did_order_item', - 'o2m_table' => 'did_order_item', - 'm2_label' => 'Item', - 'm2_error_callback' => $m2_error_callback, - }, - #'msa', - #{ field => 'latanum', - # type => 'select-table', - # name_col => 'description', - # table => 'lata', - # disable_empty => 1, - # label_showkey => 1, - #}, - #'rate_center', - #{ field => 'state', - # type => 'select-state', - # country => 'US', - #}, - #'quantity', - ], + { field => 'stock_or_customer', + type => 'radio', + options => [ 'Stock', 'Customer', ], + onchange => 'stockcust_changed', + curr_value_callback => $stock_or_customer, + }, + { field => 'custnum', + type => 'search-cust_main', + }, + { type => 'tablebreak-tr-title', + value => 'Order Items', + }, + { 'field' => 'orderitemnum', + 'type' => 'did_order_item', + 'o2m_table' => 'did_order_item', + 'm2_label' => 'Item', + 'm2_error_callback' => $m2_error_callback, + }, + ], 'labels' => { 'ordernum' => 'Order', 'vendornum' => 'Vendor', 'vendor_order_id' => 'Vendor Order #', - 'custnum' => 'Customer', - #'msa' => 'MSA', - #'latanum' => 'LATA', - #'rate_center' => 'Rate Center', - #'state' => 'State', - #'quantity' => 'Quantity', + 'custnum' => '', 'confirmed' => 'Confirmation Date', - 'orderitemnum' => 'Item', + 'orderitemnum' => 'Item', }, 'viewall_dir' => 'browse', 'table' => 'did_order', 'name' => 'Bulk DID Order', - 'field_callback' => $field_callback, + 'field_callback' => $field_callback, + 'html_bottom' => $javascript, ) - %> <%init> die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Import'); - my $field_callback = sub { my ($cgi, $object, $field_hashref ) = @_; if ($object->ordernum) { $field_hashref->{type} = 'text' - if $field_hashref->{field} eq 'vendor_order_id'; + if $field_hashref->{field} eq 'vendor_order_id'; $field_hashref->{type} = 'input-date-field' - if $field_hashref->{field} eq 'confirmed'; + if $field_hashref->{field} eq 'confirmed'; } }; @@ -77,7 +65,7 @@ my $m2_error_callback = sub { my($cgi, $object) = @_; #process_o2m fields in process/did_order.html - my @fields = qw( msa npa latanum rate_center state quantity ); + my @fields = qw( msa npa latanum ratecenter state quantity ); my @gfields = ( '', map "_$_", @fields ); map { @@ -99,5 +87,31 @@ my $m2_error_callback = sub { $cgi->param; }; +my $stock_or_customer = sub{ + my($cgi,$object,$field) = @_; + return 'Customer' if $object->custnum; + 'Stock'; +}; + +my $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; + } + else if ( f.stock_or_customer_Customer.checked ) { + custnum_search.disabled = false; + custnum_select.disabled = false; + } + custnum.value = ''; + custnum_search.value = ''; + } + +END diff --git a/httemplate/edit/process/did_order.html b/httemplate/edit/process/did_order.html index e5948ff0b..1762cfa25 100644 --- a/httemplate/edit/process/did_order.html +++ b/httemplate/edit/process/did_order.html @@ -1,15 +1,18 @@ <% include( 'elements/process.html', 'table' => 'did_order', 'viewall_dir' => 'browse', - 'value_callback' => $value_callback, - 'process_o2m' => { - 'table' => 'did_order_item', - 'fields' => \@item_fields, - }, + 'value_callback' => $value_callback, + 'process_o2m' => { + 'table' => 'did_order_item', + 'fields' => \@item_fields, + }, ) %> <%init> +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Import'); + unless($cgi->param('submitted')) { $cgi->param('submitted',time); } @@ -19,9 +22,6 @@ my $value_callback = sub { ($field =~ /ed$/ && $value !~ /^\d+$/) ? parse_datetime($value) : $value; }; -my @item_fields = qw( msa npa latanum rate_center state quantity ); - -die "access denied" - unless $FS::CurrentUser::CurrentUser->access_right('Import'); +my @item_fields = qw( msa npa latanum ratecenter state quantity ); diff --git a/httemplate/elements/did_order_item.html b/httemplate/elements/did_order_item.html index 263826ecc..0f5a76516 100644 --- a/httemplate/elements/did_order_item.html +++ b/httemplate/elements/did_order_item.html @@ -4,7 +4,7 @@ -% foreach my $field ( @fields ) { +% foreach my $field ( @textfields ) { % % my $value = ''; % $value = $item->get($field); @@ -17,10 +17,37 @@ VALUE = "<% scalar($cgi->param($name."_$field")) || $value |h %>" <% $onchange %> - >
- <% $label{$field} %> + > +
<% $label{$field} %> % } +% my $value = ''; +% $value = $item->get('latanum'); + +% $value = $item->get('state'); +
<% include('/elements/select-table.html', + 'name_col' => 'description', + 'table' => 'lata', + 'disable_empty' => 0, + 'empty_label' => ' ', + 'label_showkey' => 1, + 'field' => "${name}_latanum", + 'curr_value' => scalar($cgi->param("${name}_latanum")) + || $value, + ) + %> +
LATA # +
<% include('/elements/select-state.html', + 'disable_empty' => 0, + 'empty_label' => ' ', + 'country' => 'US', + 'prefix' => "${name}_", + 'state' => scalar($cgi->param("${name}_state")) + || $value, + ) + %> +
State +
@@ -51,19 +78,14 @@ if ( $curr_value ) { } my %size = ( 'npa' => 3, - 'latanum' => 3, - 'state' => 2, 'quantity' => 3,); tie my %label, 'Tie::IxHash', - 'msa' => 'MSA', - 'npa' => 'NPA', - 'latanum' => 'LATA #', - 'rate_center' => 'Rate Center', - 'state' => 'State', 'quantity' => 'Quantity', + 'npa' => 'NPA', + 'ratecenter' => 'Rate Center', + 'msa' => 'MSA', ; - -my @fields = keys %label; +my @textfields = keys %label; diff --git a/httemplate/misc/did_order_confirm.html b/httemplate/misc/did_order_confirm.html new file mode 100644 index 000000000..40495a5e9 --- /dev/null +++ b/httemplate/misc/did_order_confirm.html @@ -0,0 +1,42 @@ +<% include('/elements/header-popup.html', 'Confirm Bulk DID Order' ) %> + +<% include('/elements/error.html') %> + +
+ + + + + + + <% include( '/elements/tr-input-text.html', + 'field' => 'vendor_order_id', + 'label' => 'Vendor Order #', + 'value' => $did_order->vendor_order_id, + ) + %> + <% include( '/elements/tr-input-date-field.html', { + 'name' => 'confirmed', + 'label' => 'Order Confirmed', + 'value' => $did_order->confirmed, + }) + %> + + + +
Order #<% $ordernum %>
+ +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Import'); + +$cgi->param('ordernum') =~ /^(\d+)$/ or die 'illegal ordernum'; +my $ordernum = $1; +my $did_order = qsearchs( { + 'table' => 'did_order', + 'hashref' => { 'ordernum' => $ordernum }, +} ); +die "No order $ordernum" unless $did_order; + + diff --git a/httemplate/misc/did_order_confirmed.html b/httemplate/misc/did_order_confirmed.html new file mode 100644 index 000000000..53a41a738 --- /dev/null +++ b/httemplate/misc/did_order_confirmed.html @@ -0,0 +1,37 @@ +<% include('/elements/header-popup.html', "DID order confirmed") %> + + + +<%init> +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Import'); + +$cgi->param('ordernum') =~ /^(\d+)$/ or die 'illegal ordernum'; +my $ordernum = $1; +my $did_order = qsearchs( { + 'table' => 'did_order', + 'hashref' => { 'ordernum' => $ordernum }, +} ); +die "No order $ordernum" unless $did_order; + +my $confirmed = ''; +$confirmed = parse_datetime($cgi->param('confirmed')) + if $cgi->param('confirmed') && $cgi->param('confirmed') !~ /^\d+$/; +$confirmed = $1 + if $cgi->param('confirmed') && $cgi->param('confirmed') =~ /^(\d+)$/; + +die "invalid confirmation date" unless $confirmed; + +my $error = ''; +$did_order->confirmed($confirmed); +$did_order->vendor_order_id($cgi->param('vendor_order_id')); +$error = $did_order->replace; + +if ( $error ) { + $cgi->param('error', $error); + print $cgi->redirect(popurl(1). "did_order_confirm.html?". $cgi->query_string ); +} + + -- 2.11.0