2026-04-01 13:58:27 +02:00
|
|
|
|
<?php
|
|
|
|
|
|
/**
|
2026-04-01 17:30:10 +02:00
|
|
|
|
* Template: Mi cuenta – Facturas de Odoo
|
2026-04-01 13:58:27 +02:00
|
|
|
|
*
|
2026-04-01 17:30:10 +02:00
|
|
|
|
* Variables disponibles:
|
|
|
|
|
|
* $invoices array Lista de facturas desde Odoo
|
|
|
|
|
|
* $total int Total de facturas
|
|
|
|
|
|
* $paged int Página actual
|
|
|
|
|
|
* $num_pages int Total de páginas
|
2026-04-01 13:58:27 +02:00
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
|
|
|
|
|
|
|
|
wp_enqueue_style( 'woodoo-frontend' );
|
|
|
|
|
|
wp_enqueue_script( 'woodoo-frontend' );
|
|
|
|
|
|
?>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="woodoo-invoices">
|
2026-04-01 17:30:10 +02:00
|
|
|
|
<h3>Tus Facturas</h3>
|
2026-04-01 13:58:27 +02:00
|
|
|
|
|
|
|
|
|
|
<?php if ( empty( $invoices ) ) : ?>
|
2026-04-01 17:30:10 +02:00
|
|
|
|
<p class="woodoo-empty">No se han encontrado facturas.</p>
|
|
|
|
|
|
|
2026-04-01 13:58:27 +02:00
|
|
|
|
<?php else : ?>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="woodoo-table-wrap">
|
2026-04-01 17:30:10 +02:00
|
|
|
|
<table class="woodoo-table woodoo-invoices-table">
|
2026-04-01 13:58:27 +02:00
|
|
|
|
<thead>
|
|
|
|
|
|
<tr>
|
2026-04-01 17:30:10 +02:00
|
|
|
|
<th class="col-number">Nº Factura</th>
|
|
|
|
|
|
<th class="col-date">Fecha</th>
|
|
|
|
|
|
<th class="col-due">Vencimiento</th>
|
|
|
|
|
|
<th class="col-amount">Total</th>
|
|
|
|
|
|
<th class="col-balance">Saldo pendiente</th>
|
|
|
|
|
|
<th class="col-status">Estado</th>
|
|
|
|
|
|
<th class="col-download">PDF</th>
|
2026-04-01 13:58:27 +02:00
|
|
|
|
</tr>
|
|
|
|
|
|
</thead>
|
|
|
|
|
|
<tbody>
|
|
|
|
|
|
<?php foreach ( $invoices as $inv ) :
|
2026-04-01 17:30:10 +02:00
|
|
|
|
$currency_name = is_array( $inv['currency_id'] ) ? $inv['currency_id'][1] : '';
|
|
|
|
|
|
$currency = WooDoo_Invoices::currency_symbol( $currency_name );
|
|
|
|
|
|
$pay_state = $inv['payment_state'] ?? 'not_paid';
|
|
|
|
|
|
$badge_class = WooDoo_Invoices::payment_state_class( $pay_state );
|
|
|
|
|
|
$badge_label = WooDoo_Invoices::payment_state_label( $pay_state );
|
|
|
|
|
|
$pdf_url = add_query_arg( [
|
2026-04-01 13:58:27 +02:00
|
|
|
|
'action' => 'woodoo_invoice_pdf',
|
|
|
|
|
|
'invoice_id' => $inv['id'],
|
|
|
|
|
|
'nonce' => wp_create_nonce( 'woodoo_invoice_pdf' ),
|
|
|
|
|
|
], admin_url( 'admin-ajax.php' ) );
|
|
|
|
|
|
?>
|
|
|
|
|
|
<tr>
|
2026-04-01 17:30:10 +02:00
|
|
|
|
<td class="col-number woodoo-inv-number">
|
|
|
|
|
|
<?php echo esc_html( $inv['name'] ?: 'FAC-' . $inv['id'] ); ?>
|
2026-04-01 13:58:27 +02:00
|
|
|
|
</td>
|
2026-04-01 17:30:10 +02:00
|
|
|
|
<td class="col-date woodoo-nowrap">
|
2026-04-01 13:58:27 +02:00
|
|
|
|
<?php echo $inv['invoice_date']
|
2026-04-01 17:30:10 +02:00
|
|
|
|
? esc_html( date_i18n( 'd/m/Y', strtotime( $inv['invoice_date'] ) ) )
|
2026-04-01 13:58:27 +02:00
|
|
|
|
: '—'; ?>
|
|
|
|
|
|
</td>
|
2026-04-01 17:30:10 +02:00
|
|
|
|
<td class="col-due woodoo-nowrap">
|
2026-04-01 13:58:27 +02:00
|
|
|
|
<?php
|
|
|
|
|
|
if ( $inv['invoice_date_due'] ) {
|
2026-04-01 17:30:10 +02:00
|
|
|
|
$due_ts = strtotime( $inv['invoice_date_due'] );
|
|
|
|
|
|
$overdue = ( $pay_state === 'not_paid' || $pay_state === 'partial' ) && $due_ts < time();
|
|
|
|
|
|
if ( $overdue ) {
|
|
|
|
|
|
echo '<span class="woodoo-overdue">';
|
|
|
|
|
|
echo esc_html( date_i18n( 'd/m/Y', $due_ts ) );
|
|
|
|
|
|
echo '</span> <span class="woodoo-badge woodoo-badge--red">Vencida</span>';
|
|
|
|
|
|
} else {
|
|
|
|
|
|
echo esc_html( date_i18n( 'd/m/Y', $due_ts ) );
|
|
|
|
|
|
}
|
2026-04-01 13:58:27 +02:00
|
|
|
|
} else {
|
|
|
|
|
|
echo '—';
|
|
|
|
|
|
}
|
|
|
|
|
|
?>
|
|
|
|
|
|
</td>
|
2026-04-01 17:30:10 +02:00
|
|
|
|
<td class="col-amount woodoo-amount woodoo-nowrap">
|
|
|
|
|
|
<?php echo esc_html( number_format( (float) $inv['amount_total'], 2, ',', '.' ) . ' ' . $currency ); ?>
|
2026-04-01 13:58:27 +02:00
|
|
|
|
</td>
|
2026-04-01 17:30:10 +02:00
|
|
|
|
<td class="col-balance woodoo-amount woodoo-nowrap">
|
|
|
|
|
|
<?php echo esc_html( number_format( (float) $inv['amount_residual'], 2, ',', '.' ) . ' ' . $currency ); ?>
|
2026-04-01 13:58:27 +02:00
|
|
|
|
</td>
|
2026-04-01 17:30:10 +02:00
|
|
|
|
<td class="col-status woodoo-nowrap">
|
2026-04-01 13:58:27 +02:00
|
|
|
|
<span class="woodoo-badge <?php echo esc_attr( $badge_class ); ?>">
|
|
|
|
|
|
<?php echo esc_html( $badge_label ); ?>
|
|
|
|
|
|
</span>
|
|
|
|
|
|
</td>
|
2026-04-01 17:30:10 +02:00
|
|
|
|
<td class="col-download">
|
2026-04-01 13:58:27 +02:00
|
|
|
|
<a href="<?php echo esc_url( $pdf_url ); ?>"
|
|
|
|
|
|
class="woodoo-btn woodoo-btn--sm"
|
|
|
|
|
|
target="_blank"
|
2026-04-01 17:30:10 +02:00
|
|
|
|
rel="noopener"
|
|
|
|
|
|
title="Descargar factura en PDF">
|
|
|
|
|
|
↓ PDF
|
2026-04-01 13:58:27 +02:00
|
|
|
|
</a>
|
|
|
|
|
|
</td>
|
|
|
|
|
|
</tr>
|
|
|
|
|
|
<?php endforeach; ?>
|
|
|
|
|
|
</tbody>
|
|
|
|
|
|
</table>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<?php if ( $num_pages > 1 ) :
|
|
|
|
|
|
$base_url = wc_get_account_endpoint_url( WooDoo_Invoices::ENDPOINT );
|
|
|
|
|
|
?>
|
2026-04-01 17:30:10 +02:00
|
|
|
|
<nav class="woodoo-pagination" aria-label="Paginación de facturas">
|
2026-04-01 13:58:27 +02:00
|
|
|
|
<?php for ( $p = 1; $p <= $num_pages; $p++ ) : ?>
|
|
|
|
|
|
<?php if ( $p === $paged ) : ?>
|
|
|
|
|
|
<span class="woodoo-page-current"><?php echo esc_html( $p ); ?></span>
|
|
|
|
|
|
<?php else : ?>
|
|
|
|
|
|
<a href="<?php echo esc_url( add_query_arg( 'invoice_page', $p, $base_url ) ); ?>">
|
|
|
|
|
|
<?php echo esc_html( $p ); ?>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
<?php endif; ?>
|
|
|
|
|
|
<?php endfor; ?>
|
|
|
|
|
|
</nav>
|
|
|
|
|
|
<?php endif; ?>
|
|
|
|
|
|
|
|
|
|
|
|
<?php endif; ?>
|
|
|
|
|
|
</div>
|