MVP final

This commit is contained in:
Nachou-u
2026-08-20 21:01:12 -04:00
parent 08a26cbf2f
commit 66655fb05c
10 changed files with 593 additions and 32 deletions
+53
View File
@@ -343,6 +343,59 @@ def export_expenses_csv(request):
return response
@login_required
@role_required('Administrador', 'Administrador Finanzas')
def export_bank_transfer_csv(request):
# Get all expenses requested for payment that are linked to a vendor
pending_expenses = Expense.objects.filter(
approval_status=ApprovalStatusEnum.SOLICITADO_FINANZAS,
vendor__isnull=False
)
# Group debts by vendor to perform single bank transfer per supplier
debts = pending_expenses.values(
'vendor__id', 'vendor__rut', 'vendor__name', 'vendor__bank', 'vendor__account_type', 'vendor__account_number'
).annotate(
total_clp=Sum('amount_clp'),
total_usd=Sum('amount_usd'),
expense_count=Count('id')
).order_by('vendor__name')
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = f'attachment; filename="Nomina_Transferencias_{date.today()}.csv"'
# Write BOM for Excel Spanish compatibility
response.write('\ufeff'.encode('utf-8'))
writer = csv.writer(response, delimiter=';')
writer.writerow([
'RUT Proveedor', 'Nombre / Razón Social', 'Banco', 'Tipo Cuenta',
'Número Cuenta', 'Monto Transferir (CLP)', 'Monto Transferir (USD)',
'Comprobantes Pendientes', 'Glosa / Comentario'
])
for debt in debts:
writer.writerow([
debt['vendor__rut'],
debt['vendor__name'],
debt['vendor__bank'] or 'No Registrado',
debt['vendor__account_type'] or 'No Registrado',
debt['vendor__account_number'] or 'No Registrado',
int(debt['total_clp']),
round(debt['total_usd'], 2),
debt['expense_count'],
'Pago Facturas Pendientes EFINTEL ERP'
])
AuditLog.objects.create(
user=request.user,
action="EXPORT_BANK_TRANSFER",
description="Se exportó la nómina bancaria de transferencias a proveedores."
)
return response
@login_required
def project_list(request):
projects = Project.objects.annotate(