[comment]
ui_template: Yes
ui_template_name: leftonly
[/comment]
[tmp members_only]1[/tmp]
[tmp page_title]__COMPANY__ -- [L]Process Order Return[/L][/tmp]
[control reset=1]
[control-set]
[component]search_box_small[/component]
[/control-set]
[control-set]
[component]cart_tiny[/component]
[/control-set]
[control-set]
[component]product_tree[/component]
[/control-set]
[control-set]
[component][/component]
[/control-set]
[control-set]
[component]random[/component]
[size]3[/size]
[cols]3[/cols]
[/control-set]
[control reset=1]
@_LEFTONLY_TOP_@
[tmpn ret_num_items][/tmpn]
[tmpn qty_over][/tmpn]
[tmpn total_qty][/tmpn]
[tmpn return_credit][/tmpn]
[tmpn rma_number][/tmpn]
[perl tables="orderline transactions userdb order_returns"]
if(! $Values->{return_items}) {
$Tag->warnings(q{
[L]No items were selected for return.[/L]
[L]Please use your browser's back button to return to the order and select at least one item from the order to return.[/L]
});
return;
}
my $on = $Values->{order_number};
my $tdb = $Db{transactions} or die ("No transactions DB!");
my $odb = $Db{orderline} or die ("No orderline DB!");
my $rdb = $Db{order_returns} or die ("No order_returns DB!");
my $trec = $tdb->row_hash($on);
if(! $trec) {
$Tag->warnings("Cannot find order $on, contact us.");
return;
}
if($trec->{username} ne $Session->{username}) {
$Tag->warnings("$on not your order! Contact us.");
Log("$Session->{username} requested return $on not their order!");
return;
}
if($trec->{status} ne 'shipped') {
$Tag->warnings("Returns can only be processed for fully-shipped orders. Contact us.");
return;
}
my @items = split /\0/, $Values->{return_items};
my $num_items = @items;
$Scratch->{ret_num_items} = $num_items;
my $count = 0;
my $total_credit = 0;
my $total_qty = 0;
my $qty_over = 0;
foreach my $code (@items) {
#Debug("Doing return for $code");
my $prior = $rdb->field($code, 'rma_number');
if($prior) {
$Tag->warnings("Return already processed for line $code on RMA $prior! Skipping.");
next;
}
my $rec = $odb->row_hash($code)
or do {
$Tag->warnings("No order entry $code!");
next;
};
my $qty1 = $rec->{quantity};
my $qty2 = $Values->{"qty-$code"}
or next;
my $amount = $rec->{price} * $qty2;
if($qty1 < $qty2) {
$Tag->warnings(qq{
[L]You may not return more items than you originally purchased.[/L]
[L]Please use your browser's back to enter a more appropriate value.[/L]
});
$qty_over = 1;
last;
}
else {
#Debug("Doing record for $code");
push @done, {
code => $code,
nitems => $qty2,
total => $amount,
comment => "$qty2 returned, credit $amount",
};
}
$total_credit += $amount;
$total_qty += $qty2;
$count++;
}
return if $qty_over;
## Good return, now process
## Could replace with external request
my $rma = $Tag->counter('etc/rma.number');
my $date = $Tag->time({ body => '%Y%m%d %H:%M:%S' });
$Scratch->{return_credit} = $total_credit;
$Scratch->{total_qty} = $total_qty;
$tdb->set_field($on, 'status', 'returned');
$tdb->set_field($on, 'archived', '');
foreach my $rec (@done) {
#Debug("updating records for $code");
$rec->{order_number} = $on;
$rec->{session} = $Session->{id};
$rec->{username} = $Session->{username};
$rec->{return_date} = $date;
$rec->{rma_number} = $rma;
my $code = delete $rec->{code};
my $comment = delete $rec->{comment};
$rdb->set_slice($code, $rec);
$odb->set_slice($code, {
status => 'returned',
comment => $comment,
});
}
$Scratch->{rma_number} = $rma;
return;
[/perl]
[warnings auto=1]
[if scratch rma_number]
[L PROCESS_RETURNS_PAR1]Your return has been processed. Please ship the item(s) to the address
below and your account will be credited for the returned amount.
A return confirmation has also been emailed to you.[/L]
[L]Be sure to list the RMA number issued below on your shipping label.[/L]
__COMPANY__ __ADDRESS__ __CITY__ |
|
|
[tmp return1] [comment] SEND REPORT OF NEW RETURN TO SHOP OWNER [/comment] [email to="__COMPANY__ <__ORDERS_TO__>" subject="__COMPANY__ - RMA: [scratch rma_number]" from="[value email] <[value email]>" reply="[value email] <[value email]>"] [L]Return request received.[/L] [L]Company[/L]: [value company] [L]Name[/L]: [value fname] [value lname] [L]Email[/L]: [value email] [L]Day Phone[/L]: [value phone_day] [L]Evening Phone[/L]: [value phone_night] [L]RMA Number[/L]: [scratch rma_number] [L]Date Issued[/L]: [tag time]%Y%m%d %H:%M:%S[/tag] [L]Order Number[/L]: [value order_number] [L]Item Quantity[/L]: [scratch total_qty] [L]Credit Amount[/L]: [currency][scratch return_credit][/currency] [/email] [/tmp] [tmp return1] [comment] SEND RETURN SUMMARY TO CUSTOMER [/comment] [email to="[value email]" subject="__COMPANY__ - RMA: [scratch rma_number]" from="__COMPANY__ <__ORDERS_TO__>" reply="__COMPANY__ <__ORDERS_TO__>"] [msg arg.0="__COMPANY__"]Hello and thank you for your interest in %s products.[/msg] [L]We have received your return request and have issued you an RMA number.[/L] [L]Please use the information below to process your return[/L]: [L]Shipping Address[/L]: __COMPANY__ __ADDRESS__ __CITY__ [L]Return Info[/L]: [L]RMA Number[/L]: [scratch rma_number] [L]Date Issued[/L]: [tag time]%Y%m%d %H:%M:%S[/tag] [L]Order Number[/L]: [value order_number] [L]Item Quantity[/L]: [scratch total_qty] [L]Credit Amount[/L]: [currency][scratch return_credit][/currency] [/email] [/tmp] [/if] @_LEFTONLY_BOTTOM_@