diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/cashtransfer/api/ShareAdvanceCollectionApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/cashtransfer/api/ShareAdvanceCollectionApiResource.java
index 23004022d..bff7f2df1 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/cashtransfer/api/ShareAdvanceCollectionApiResource.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/cashtransfer/api/ShareAdvanceCollectionApiResource.java
@@ -196,11 +196,11 @@ public class ShareAdvanceCollectionApiResource {
// to search it up by hand -- it's pulled onto this list itself, the first time anyone asks
// for it. Anything not tagged this way (an older row, or one deliberately left General) still
// needs the by-voucher search below, same as before.
- autoAdoptShareCollectionTagged(clientId);
+ autoAdoptShareCollectionTagged();
final StringBuilder sql = new StringBuilder("SELECT c.id, c.receipt_no, c.voucher_no, c.client_id,"
+ " cl.display_name AS client_name, "
- + " c.collection_date, c.amount, c.currency_code, c.status, c.note, c.collected_by_name,"
+ + " to_char(c.collection_date, 'YYYY-MM-DD') AS collection_date, c.amount, c.currency_code, c.status, c.note, c.collected_by_name,"
// The GL account this specific receipt's money actually sits in -- its own posting's
// credit leg, read back from acc_gl_journal_entry rather than guessed, so the GL
// Account picker above can be kept in sync with whichever receipt gets ticked.
@@ -222,6 +222,102 @@ public class ShareAdvanceCollectionApiResource {
// ══════════════════════════════════════════════════════════════════════
// GET — One unapplied receipt by the voucher number quoted by the member
+ // ══════════════════════════════════════════════════════════════════════
+ // GET /unattributed — share-collection receipts that name no member yet
+ // ══════════════════════════════════════════════════════════════════════
+ /**
+ * Approved cashier receipts tagged as a share collection that are still waiting to be attached to
+ * a member.
+ *
+ *
+ * A receipt taken straight into a GL account names no member — a GL account is nobody's account —
+ * so it can never be auto-adopted onto whichever member's screen happens to be open. That rule
+ * stands. What it left behind, though, was a counter tagging a receipt "Share Collection" on
+ * purpose and then finding nothing on the Apply screen but "no unapplied receipt for this
+ * member", with no way to discover that the voucher they just raised is sitting right there.
+ *
+ *
+ * This lists exactly those receipts so they can be seen and picked. Picking one still runs the
+ * same by-voucher adoption a typed voucher number does: a person at the counter deliberately
+ * attaching a named voucher to a member they can see. The list makes the voucher findable; it
+ * does not decide whose money it is.
+ *
+ *
+ * Receipts already claimed — applied to a share account, or consumed by a Demand Draft — are left
+ * out, so nothing here is something a second member could take twice. A receipt that already
+ * names a member (a clerk collection resolved from the savings account it debited) is still
+ * listed here, not only on that member's own screen -- every branch counter runs the same Apply
+ * screen for whichever member is in front of them, so a voucher must be findable there regardless
+ * of which member's screen happened to raise or auto-adopt it first. Attaching it from a different
+ * member's screen still goes through the ordinary by-voucher lookup below, which refuses a
+ * mismatch rather than silently moving the money -- this list only makes the voucher visible, it
+ * does not reassign it.
+ */
+ @GET
+ @Path("/unattributed")
+ public Response listUnattributed() {
+ this.context.authenticatedUser();
+
+ // Same eager conversion as listUnapplied() -- run unconditionally (no client filter) so a
+ // voucher tagged Share Collection becomes visible everywhere the first time ANY Apply screen
+ // is opened, not only once the specific member it names happens to be looked up.
+ autoAdoptShareCollectionTagged();
+
+ final List