]> git.imager.perl.org - bse.git/blobdiff - site/cgi-bin/modules/BSE/UI/AdminShop.pm
input date parser now validates the date
[bse.git] / site / cgi-bin / modules / BSE / UI / AdminShop.pm
index d079b9ccb41f2a7e7947ce9251604844a8dee86d..9fef970d2020eb62d06b16061a3172fc8a87fb01 100644 (file)
@@ -28,6 +28,8 @@ my %actions =
    order_list_incomplete => 'shop_order_list',
    order_detail => 'shop_order_detail',
    order_filled => 'shop_order_filled',
+   order_paid => 'shop_order_paid',
+   order_unpaid => 'shop_order_unpaid',
    product_detail => '',
    product_list => '',
   );
@@ -658,6 +660,48 @@ sub req_order_filled {
   }
 }
 
+sub req_order_paid {
+  my ($class, $req) = @_;
+
+  return $class->_set_order_paid($req, 1);
+}
+
+sub req_order_unpaid {
+  my ($class, $req) = @_;
+
+  return $class->_set_order_paid($req, 0);
+}
+
+sub _set_order_paid {
+  my ($class, $req, $value) = @_;
+
+  my $id = $req->cgi->param('id');
+  if ($id and
+      my $order = BSE::TB::Orders->getByPkey($id)) {
+    if ($order->paidFor != $value) {
+      if ($value) {
+       $order->set_paymentType(3);
+      }
+      else {
+       $order->paymentType == 3
+         or return $class->req_order_detail($req, "You can only unpay manually paid orders");
+      }
+
+      $order->set_paidFor($value);
+      my $user = $req->user;
+      my $name = $user ? $user->logon : "--unknown--";
+      require POSIX;
+      $order->{instructions} .= "\nMarked " . ($value ? "paid" : "unpaid" ) . " by $name " . POSIX::strftime("%H:%M %d/%m/%Y", localtime);
+      $order->save();
+    }
+
+    return BSE::Template->get_refresh("$ENV{SCRIPT_NAME}?a_order_detail=1&id=$id", $req->cfg);
+  }
+  else {
+    return $class->req_order_list($req);
+  }
+}
+
 #####################
 # utilities
 # perhaps some of these belong in a class...