<?php
require_once __DIR__.'/../../config/auth.php';require_once __DIR__.'/_finanzas.php';
$desde=$_GET['desde']??date('Y-m-01');$hasta=$_GET['hasta']??date('Y-m-t');$tercero=$_GET['tercero']??'TODOS';$params=[];$tipos='ss';$where=' WHERE ie.fecha BETWEEN ? AND ?';$params=[$desde,$hasta];
if($tercero!=='TODOS'){[$tt,$tid]=array_pad(explode(':',$tercero,2),2,'');$tid=(int)$tid;if($tt==='Cliente'){$where.=' AND ie.cliente_id=?';$params[]=$tid;$tipos.='i';}elseif($tt==='Proveedor'){$where.=' AND ie.proveedor_id=?';$params[]=$tid;$tipos.='i';}}
$sql="SELECT ie.*,COALESCE(c.nombre,p.nombre) tercero,COALESCE(SUM(cm.monto),0) pago,ie.monto-COALESCE(SUM(cm.monto),0) saldo FROM ingresos_egresos ie LEFT JOIN clientes c ON c.id=ie.cliente_id LEFT JOIN proveedores p ON p.id=ie.proveedor_id LEFT JOIN caja_movimientos cm ON cm.ingreso_egreso_id=ie.id $where GROUP BY ie.id ORDER BY ie.fecha,ie.id";$s=$conn->prepare($sql);$s->bind_param($tipos,...$params);$s->execute();$res=$s->get_result();$terceros=opciones_terceros($conn);
include __DIR__.'/../../includes/header.php';include __DIR__.'/../../includes/sidebar.php';?>
<main class="main"><?php include __DIR__.'/../../includes/topbar.php';?><div class="content"><h3 class="page-title">Extracto</h3><p class="text-muted">Detalle de documentos a cobrar y a pagar.</p><div class="card card-hm mb-3"><div class="card-body"><form class="row g-3"><div class="col-md-3"><label>Desde</label><input class="form-control" type="date" name="desde" value="<?=e($desde)?>"></div><div class="col-md-3"><label>Hasta</label><input class="form-control" type="date" name="hasta" value="<?=e($hasta)?>"></div><div class="col-md-4"><label>Cliente o proveedor</label><input class="form-control" list="terceros" id="terceroTexto" value="<?=$tercero==='TODOS'?'TODOS':''?>" autocomplete="off"><input type="hidden" name="tercero" id="terceroValor" value="<?=e($tercero)?>"><datalist id="terceros"><option data-value="TODOS" value="TODOS"><?php foreach($terceros as $t):?><option data-value="<?=e($t['valor'])?>" value="<?=e($t['texto'])?>"><?php endforeach;?></datalist></div><div class="col-md-2 d-flex align-items-end"><button class="btn btn-hm w-100">Filtrar</button></div></form></div></div><div class="card card-hm"><div class="card-body table-responsive"><table class="table"><thead><tr><th>Código</th><th>Fecha</th><th>Cliente/Proveedor</th><th>Descripción</th><th>Vencimiento</th><th class="text-end">Monto</th><th class="text-end">Pago</th><th class="text-end">Saldo a cobrar</th><th class="text-end">Saldo a pagar</th></tr></thead><tbody><?php $tm=$tp=$tc=$tpa=0;while($x=$res->fetch_assoc()):$tm+=(float)$x['monto'];$tp+=(float)$x['pago'];$saldo=(float)$x['saldo'];if($x['naturaleza']==='A Cobrar')$tc+=$saldo;else$tpa+=$saldo;?><tr><td><?=e($x['codigo'])?></td><td><?=e($x['fecha'])?></td><td><?=e($x['tercero'])?></td><td><?=e($x['descripcion'])?></td><td><?=e($x['fecha_vencimiento'])?></td><td class="text-end"><?=numero_py($x['monto'])?></td><td class="text-end"><?=numero_py($x['pago'])?></td><td class="text-end"><?=$x['naturaleza']==='A Cobrar'?numero_py($saldo):''?></td><td class="text-end"><?=$x['naturaleza']==='A Pagar'?numero_py($saldo):''?></td></tr><?php endwhile;?></tbody><tfoot><tr><th colspan="5" class="text-end">Totales</th><th class="text-end"><?=numero_py($tm)?></th><th class="text-end"><?=numero_py($tp)?></th><th class="text-end"><?=numero_py($tc)?></th><th class="text-end"><?=numero_py($tpa)?></th></tr></tfoot></table></div></div></div></main><script>terceroTexto.oninput=()=>{const o=[...document.querySelectorAll('#terceros option')].find(x=>x.value===terceroTexto.value);terceroValor.value=o?.dataset.value||'TODOS'}</script><?php include __DIR__.'/../../includes/footer.php';?>
