Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/payments/browser.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/payments/browser.py	(revision 12762)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/payments/browser.py	(revision 12763)
@@ -127,2 +127,59 @@
             self.flash(_('No payment found.'), type="warning")
         return
+
+
+class PaymentsContainerManagePage(IkobaPage):
+    """The manage page for payment containers.
+    """
+    grok.context(IPaymentsContainer)
+    grok.name('manage')
+    grok.require('waeup.managePortal')
+    grok.template('containermanagepage')
+    pnav = 5
+    label = _('Manage payment section')
+    search_button = _('Find payments(s)')
+    remove_button = _('Remove selected')
+
+    @property
+    def gateway_services(self):
+        return get_payment_providers()
+
+    @property
+    def payment_states(self):
+        return payment_states
+
+    def update(self, *args, **kw):
+        form = self.request.form
+        self.hitlist = []
+        if 'searchterm' in form and form['searchterm']:
+            self.searchterm = form['searchterm']
+            self.searchtype = form['searchtype']
+        elif 'old_searchterm' in form:
+            self.searchterm = form['old_searchterm']
+            self.searchtype = form['old_searchtype']
+        else:
+            if 'search' in form:
+                self.flash(_('Empty search string'), type="warning")
+            return
+        if not 'entries' in form:
+            self.hitlist = search(query=self.searchterm,
+                searchtype=self.searchtype)
+            if not self.hitlist:
+                self.flash(_('No payment found.'), type="warning")
+            if 'remove' in form:
+                self.flash(_('No item selected.'), type="warning")
+            return
+        entries = form['entries']
+        if isinstance(entries, basestring):
+            entries = [entries]
+        deleted = []
+        for entry in entries:
+            if 'remove' in form:
+                del self.context[entry]
+                deleted.append(entry)
+        self.hitlist = search(query=self.searchterm,
+            searchtype=self.searchtype)
+        if len(deleted):
+            self.flash(_('Successfully removed: ${a}',
+                mapping={'a': ','.join(deleted)}))
+        return
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/payments/templates/containermanagepage.pt
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/payments/templates/containermanagepage.pt	(revision 12763)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/payments/templates/containermanagepage.pt	(revision 12763)
@@ -0,0 +1,70 @@
+<form method="POST" i18n:domain="waeup.ikoba" class="form-inline">
+  <br />
+    <div class="form-group">
+      <input class="btn btn-primary" type="submit" name="search"
+        tal:attributes="value view/search_button" />
+    </div>
+    <div class="form-group">
+      <select name="searchtype" class="form-control">
+        <option i18n:translate="" value="payment_id">with payment id</option>
+        <option i18n:translate="" value="payer_id">with payer id</option>
+        <option i18n:translate="" value="payable_id">with contract id</option>
+      </select>
+    </div>
+    <div class="form-group">
+      <input type="text" class="form-control" name="searchterm" />
+    </div>
+  <br />
+  <div tal:condition="view/hitlist">
+    <h3 i18n:translate="">Search Results</h3>
+    <input type="hidden" name="old_searchterm"
+         tal:attributes="value view/searchterm" />
+    <input type="hidden" name="old_searchtype"
+         tal:attributes="value view/searchtype" />
+
+    <br /><br />
+    <table class="ikoba-data-table dataTableManage">
+      <thead>
+      <tr>
+        <th>&nbsp;</th>
+        <th i18n:translate="">Payment Id</th>
+        <th i18n:translate="">Creation Date</th>
+        <th i18n:translate="">Payment Date</th>
+        <th i18n:translate="">Service</th>
+        <th i18n:translate="">Amount</th>
+        <th i18n:translate="">Currency</th>
+        <th i18n:translate="">State</th>
+        <th i18n:translate="">Contract</th>
+      </tr>
+      </thead>
+      <tbody>
+        <tr tal:repeat="value view/hitlist">
+      	  <td>
+            <input type="checkbox" name="entries" tal:attributes="value python:value[0].__name__" />
+          </td>
+          <td><span tal:content="python: value[0].payment_id[:9]"></span>...</td>
+          <td tal:content="python: layout.formatDatetime(value[0].creation_date)">CREATION DATE</td>
+          <td tal:content="python: layout.formatDatetime(value[0].payment_date)">PAYMENT DATE</td>
+          <td tal:content="python: view.gateway_services[value[0].gateway_service].title">SERVICE</td>
+          <td tal:content="python: value[0].amount">AMOUNT</td>
+          <td tal:content="python: value[0].currency">CURRENCY</td>
+          <td tal:content="python: view.payment_states.getTerm(value[0].state).title">STATE</td>
+          <td>
+            <span tal:condition="python: value[1] is not None">
+              <a tal:attributes="href python: view.url(value[2])">
+                <span tal:content="python: value[1].title">PAYABLETITLE</span>
+              </a>
+            </span>
+          </td>
+        </tr>
+      </tbody>
+    </table>
+    <input type="checkbox" onClick="toggle(this, 'entries')" />
+    <span  i18n:translate="">Select all</span>
+    <br /><br />
+    <input type="submit" name="remove"
+           tal:attributes="value view/remove_button" class="btn btn-default"
+           onclick="return confirmPost('Are you sure?')"/>
+  </div>
+</form>
+
