Fix critical member management issues: dues tracking, member IDs, and profile display
All checks were successful
Build And Push Image / docker (push) Successful in 2m20s
All checks were successful
Build And Push Image / docker (push) Successful in 2m20s
- Fix dues payment logic to automatically calculate payment_due_date as 1 year from payment date - Remove redundant dues_paid_until field and replace with payment_due_date throughout - Implement member ID generation system with format MUSA-YYYY-XXXX - Create migration endpoints for generating member IDs and fixing payment dates - Update admin members page to display actual member_id from database - Ensure ProfileAvatar components use correct member_id field - Add support for profile images in list and grid views with initials fallback - Fix countries export alias for backward compatibility 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -177,7 +177,7 @@
|
||||
/>
|
||||
<div>
|
||||
<div class="font-weight-medium">{{ item.first_name }} {{ item.last_name }}</div>
|
||||
<div class="text-caption text-medium-emphasis">Member ID: {{ item.member_id }}</div>
|
||||
<div class="text-caption text-medium-emphasis">ID: {{ item.member_id || `Pending (DB ID: ${item.Id})` }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -710,7 +710,8 @@ const loadMembers = async () => {
|
||||
const duesPaidThisYear = lastPaid && lastPaid.getFullYear() === currentYear;
|
||||
|
||||
return {
|
||||
member_id: member.Id || member.id,
|
||||
...member, // Keep all original fields including Id for API calls
|
||||
member_id: member.member_id || '', // Use the actual member_id field
|
||||
first_name: member.first_name,
|
||||
last_name: member.last_name,
|
||||
name: `${member.last_name || ''}, ${member.first_name || ''}`.trim(),
|
||||
@@ -721,6 +722,8 @@ const loadMembers = async () => {
|
||||
dues_status: member.dues_status || (duesPaidThisYear ? 'Paid' : 'Due'),
|
||||
dues_paid_this_year: duesPaidThisYear,
|
||||
last_dues_paid: member.last_dues_paid,
|
||||
membership_date_paid: member.membership_date_paid,
|
||||
payment_due_date: member.payment_due_date,
|
||||
join_date: member.member_since || member.created_at,
|
||||
phone: member.phone_number || member.phone || ''
|
||||
};
|
||||
|
||||
@@ -509,7 +509,7 @@ const loadPayments = async () => {
|
||||
|
||||
// If member has dues due/overdue, create a pending payment record
|
||||
if (member.dues_status === 'Due' || member.dues_status === 'Overdue') {
|
||||
const dueDate = member.dues_paid_until ? new Date(member.dues_paid_until) : null;
|
||||
const dueDate = member.payment_due_date ? new Date(member.payment_due_date) : null;
|
||||
if (dueDate) {
|
||||
paymentRecords.push({
|
||||
id: transactionCounter++,
|
||||
|
||||
Reference in New Issue
Block a user