<?php
$page_title='الشركاء ورأس المال';$UA_FORCE_DESIGN_V2=true;$UA_PAGE_CSS=['assets/css/finance_partners.css'];
require_once __DIR__.'/finance_partners_lib.php';require_login('login.php');if(function_exists('require_perm'))require_perm('can_view_reports');
$actorId=(int)($_SESSION['admin_id']??0);$err='';$msg='';finance_partners_migrate($conn);
if($_SERVER['REQUEST_METHOD']==='POST'){
  if(function_exists('ua_csrf_verify')&&!ua_csrf_verify())$err='انتهت صلاحية الطلب. أعد تحميل الصفحة.';
  else{$action=(string)($_POST['action']??'');
    if($action==='save_partner'){$r=finance_partner_save($conn,$_POST,$actorId);if(!empty($r['ok'])){header('Location: finance_partners.php?saved=1');exit;}$err=(string)($r['error']??'تعذر حفظ الشريك.');}
    elseif($action==='capital_entry'){$amount=round((float)($_POST['amount']??0),2);$mode=(string)($_POST['mode']??'ONE');$partnerId=(int)($_POST['partner_id']??0);$day=(string)($_POST['effective_date']??date('Y-m-d'));$note=substr(trim((string)($_POST['note']??'')),0,255);$alloc=finance_capital_allocations($conn,$amount,$mode,$partnerId);
      if(!$alloc)$err='اختر شريكًا صالحًا أو أكمل مجموع الحصص إلى 100%.';else try{$conn->begin_transaction();foreach($alloc as $row){$r=finance_partner_post_ledger($conn,(int)$row['partner_id'],'CAPITAL','CREDIT',(float)$row['amount'],['entry_type'=>'CAPITAL_CONTRIBUTION','effective_date'=>$day,'note'=>$note?:'مساهمة رأسمالية','idempotency_key'=>'capital-manual-'.bin2hex(random_bytes(12)).'-'.$row['partner_id'],'created_by'=>$actorId]);if(empty($r['ok']))throw new RuntimeException((string)($r['error']??''));}$conn->commit();header('Location: finance_partners.php?capital=1');exit;}catch(Throwable $e){@$conn->rollback();$err=$e->getMessage();}}
    elseif($action==='post_profit'){$r=finance_profit_post($conn,(string)($_POST['month']??''),$actorId);if(!empty($r['ok'])){header('Location: finance_partners.php?distributed=1&month='.urlencode((string)$_POST['month']));exit;}$err=(string)($r['error']??'تعذر تثبيت التوزيع.');}
    elseif($action==='profit_payout'){$r=finance_partner_profit_payout($conn,(int)($_POST['partner_id']??0),(float)($_POST['amount']??0),(string)($_POST['account_key']??''),(string)($_POST['effective_date']??date('Y-m-d')),$actorId,(string)($_POST['note']??''));if(!empty($r['ok'])){header('Location: finance_partners.php?payout=1');exit;}$err=(string)($r['error']??'تعذر صرف حصة الأرباح.');}
  }
}
if(isset($_GET['saved']))$msg='تم حفظ بيانات الشريك ونسبة الملكية.';if(isset($_GET['capital']))$msg='تم ترحيل المساهمة إلى دفتر رأس المال.';if(isset($_GET['distributed']))$msg='تم تثبيت توزيع أرباح الشهر دون تكرار.';
if(isset($_GET['payout']))$msg='تم صرف حصة الأرباح وخصمها من الصندوق المحدد بقيدين مترابطين.';
$month=preg_match('/^\d{4}-\d{2}$/',(string)($_GET['month']??''))?(string)$_GET['month']:date('Y-m');$snapshot=finance_profit_snapshot($conn,$month);$partners=finance_partners_list($conn,false);$active=array_values(array_filter($partners,fn($p)=>(int)$p['is_active']===1));$shareTotal=array_sum(array_map(fn($p)=>(float)$p['ownership_percent'],$active));
$periods=[];$rs=$conn->query("SELECT * FROM finance_profit_periods ORDER BY month_key DESC LIMIT 24");while($rs&&($row=$rs->fetch_assoc()))$periods[]=$row;
$ledger=[];$rs=$conn->query("SELECT l.*,p.name partner_name FROM finance_partner_ledger l JOIN finance_partners p ON p.id=l.partner_id ORDER BY l.effective_date DESC,l.id DESC LIMIT 150");while($rs&&($row=$rs->fetch_assoc()))$ledger[]=$row;
$cashboxes=finance_partner_cashboxes($conn);
?>
<?php include __DIR__.'/header.php';include __DIR__.'/sidebar.php'; ?>
<div class="content-wrapper fp-page"><section class="content-header"><div class="container-fluid"><div class="fp-hero"><div><span>Equity & Profit Sharing</span><h1>الشركاء ورأس المال</h1><p>دفتر مستقل لرأس المال وحصص الأرباح؛ الحركات الرأسمالية لا تُسجل كمصروف تشغيلي.</p></div><div class="fp-hero-total"><small>إجمالي نسب الشركاء النشطين</small><b dir="ltr"><?= number_format($shareTotal,2) ?>%</b><em class="<?= abs($shareTotal-100)<.0001?'ok':'warn' ?>"><?= abs($shareTotal-100)<.0001?'جاهز لتوزيع الأرباح':'يلزم إكمال النسب إلى 100%' ?></em></div></div></div></section>
<section class="content"><div class="container-fluid"><?php $finance_active='partners';$finance_group='equity';include __DIR__.'/finance_tabs.php'; ?>
<?php if($err):?><div class="alert alert-danger"><?= h($err) ?></div><?php endif;?><?php if($msg):?><div class="alert alert-success"><?= h($msg) ?></div><?php endif;?>
<div class="fp-grid fp-kpis"><article><span>رأس المال المثبت</span><b><?= number_format(array_sum(array_map(fn($p)=>(float)$p['capital_balance'],$partners)),2) ?></b><small>SYP</small></article><article><span>أرباح موزعة غير مسحوبة</span><b><?= number_format(array_sum(array_map(fn($p)=>(float)$p['profit_balance'],$partners)),2) ?></b><small>SYP</small></article><article><span>صافي ربح <?= h($month) ?></span><b class="<?= $snapshot['net_profit']>=0?'positive':'negative' ?>"><?= number_format($snapshot['net_profit'],2) ?></b><small>SYP</small></article><article><span>الشركاء النشطون</span><b><?= count($active) ?></b><small>شريك</small></article></div>
<div class="fp-grid fp-main"><section class="fp-card"><header><div><span>Partner Registry</span><h2>تعريف شريك أو تعديل حصته</h2></div></header><form method="post" class="fp-form"><?php if(function_exists('ua_csrf_field'))ua_csrf_field();?><input type="hidden" name="action" value="save_partner"><div><label>الشريك</label><select name="id"><option value="0">شريك جديد</option><?php foreach($partners as $p):?><option value="<?= (int)$p['id'] ?>"><?= h($p['name']) ?> (<?= number_format((float)$p['ownership_percent'],2) ?>%)</option><?php endforeach;?></select></div><div><label>الاسم *</label><input name="name" required maxlength="160"></div><div><label>الرمز</label><input name="code" maxlength="50"></div><div><label>نسبة الملكية % *</label><input name="ownership_percent" type="number" min="0" max="100" step="0.000001" required></div><div class="wide"><label>ملاحظات</label><input name="notes" maxlength="255"></div><label class="fp-check"><input type="checkbox" name="is_active" value="1" checked> شريك نشط</label><button><i class="fa fa-save"></i> حفظ الشريك</button></form></section>
<section class="fp-card"><header><div><span>Capital Ledger</span><h2>تسجيل مساهمة رأسمالية</h2></div></header><form method="post" class="fp-form"><?php if(function_exists('ua_csrf_field'))ua_csrf_field();?><input type="hidden" name="action" value="capital_entry"><div><label>طريقة الإسناد</label><select name="mode" id="fpMode"><option value="ONE">لشريك محدد</option><option value="ALL">لكل الشركاء حسب الحصص</option></select></div><div><label>الشريك</label><select name="partner_id" id="fpPartner"><?php foreach($active as $p):?><option value="<?= (int)$p['id'] ?>"><?= h($p['name']) ?></option><?php endforeach;?></select></div><div><label>القيمة SYP *</label><input name="amount" type="number" min="0.01" step="0.01" required></div><div><label>تاريخ القيد</label><input name="effective_date" type="date" value="<?= date('Y-m-d') ?>" required></div><div class="wide"><label>البيان</label><input name="note" maxlength="255" placeholder="مصدر المساهمة أو المرجع"></div><button><i class="fa fa-level-up"></i> ترحيل إلى رأس المال</button></form><p class="fp-note"><i class="fa fa-info-circle"></i> للمشتريات الرأسمالية استخدم خيار «تمويل رأسمالي» في صفحة المشتريات الجديدة؛ ستُرحل تلقائيًا للشريك المختار أو للجميع.</p></section></div>
<section class="fp-card fp-profit"><header><div><span>Monthly Profit</span><h2>احتساب وتوزيع الأرباح الشهرية</h2></div><form method="get"><input type="month" name="month" value="<?= h($month) ?>"><button>عرض</button></form></header><div class="fp-profit-grid"><div><span>التحصيلات المثبتة</span><b><?= number_format($snapshot['revenue'],2) ?></b></div><div><span>المدفوعات والمصاريف</span><b>-<?= number_format($snapshot['expenses'],2) ?></b></div><div><span>المشتريات التشغيلية</span><b>-<?= number_format($snapshot['operating_purchases'],2) ?></b></div><div class="net"><span>صافي الربح القابل للتوزيع</span><b><?= number_format($snapshot['net_profit'],2) ?></b></div></div><form method="post" class="fp-post" onsubmit="return confirm('تثبيت توزيع أرباح هذا الشهر حسب الحصص الحالية؟ لا يمكن تكرار الترحيل.');"><?php if(function_exists('ua_csrf_field'))ua_csrf_field();?><input type="hidden" name="action" value="post_profit"><input type="hidden" name="month" value="<?= h($month) ?>"><p>يشترط إغلاق الشهر، اكتمال الحصص 100%، وعدم وجود مشتريات دولار بلا سعر صرف.</p><button <?= ($snapshot['net_profit']<=0||abs($shareTotal-100)>.0001)?'disabled':'' ?>><i class="fa fa-check-circle"></i> تثبيت توزيع الأرباح</button></form></section>
<section class="fp-card"><header><div><span>Profit Payout</span><h2>صرف حصة أرباح من صندوق محدد</h2></div></header><form method="post" class="fp-form" onsubmit="return confirm('تأكيد صرف حصة الأرباح وخصمها من الصندوق؟');"><?php if(function_exists('ua_csrf_field'))ua_csrf_field();?><input type="hidden" name="action" value="profit_payout"><div><label>الشريك</label><select name="partner_id" required><option value="">اختر</option><?php foreach($active as $p):?><option value="<?= (int)$p['id'] ?>"><?= h($p['name']) ?> — متاح <?= number_format((float)$p['profit_balance'],2) ?></option><?php endforeach;?></select></div><div><label>الصندوق</label><select name="account_key" required><?php foreach($cashboxes as $box):?><option value="<?= h($box['account_key']) ?>"><?= h($box['account_name']) ?> — <?= number_format((float)$box['balance'],2) ?></option><?php endforeach;?></select></div><div><label>القيمة SYP</label><input name="amount" type="number" min="0.01" step="0.01" required></div><div><label>تاريخ الصرف</label><input name="effective_date" type="date" value="<?= date('Y-m-d') ?>" required></div><div class="wide"><label>البيان</label><input name="note" maxlength="255" placeholder="رقم الحوالة أو بيان الاستلام"></div><button><i class="fa fa-money"></i> صرف الحصة</button></form></section>
<section class="fp-card"><header><div><span>Partners Overview</span><h2>أرصدة الشركاء</h2></div></header><div class="table-responsive"><table><thead><tr><th>الشريك</th><th>الحصة</th><th>رأس المال</th><th>رصيد الأرباح</th><th>الحالة</th></tr></thead><tbody><?php foreach($partners as $p):?><tr><td><strong><?= h($p['name']) ?></strong><small><?= h($p['code']?:'—') ?></small></td><td dir="ltr"><?= number_format((float)$p['ownership_percent'],4) ?>%</td><td dir="ltr"><?= number_format((float)$p['capital_balance'],2) ?></td><td dir="ltr"><?= number_format((float)$p['profit_balance'],2) ?></td><td><span class="fp-status <?= (int)$p['is_active']?'active':'inactive' ?>"><?= (int)$p['is_active']?'نشط':'متوقف' ?></span></td></tr><?php endforeach;?><?php if(!$partners):?><tr><td colspan="5" class="empty">لم تتم إضافة شركاء بعد.</td></tr><?php endif;?></tbody></table></div></section>
<div class="fp-grid fp-bottom"><section class="fp-card"><header><div><span>Posted Periods</span><h2>التوزيعات الشهرية المثبتة</h2></div></header><div class="table-responsive"><table><thead><tr><th>الشهر</th><th>الإيراد</th><th>التكاليف</th><th>الربح</th></tr></thead><tbody><?php foreach($periods as $r):?><tr><td dir="ltr"><?= h($r['month_key']) ?></td><td><?= number_format((float)$r['revenue_total'],2) ?></td><td><?= number_format((float)$r['expense_total']+(float)$r['operating_purchases_total'],2) ?></td><td><strong><?= number_format((float)$r['net_profit'],2) ?></strong></td></tr><?php endforeach;?><?php if(!$periods):?><tr><td colspan="4" class="empty">لا توجد توزيعات مثبتة.</td></tr><?php endif;?></tbody></table></div></section><section class="fp-card"><header><div><span>Audit Trail</span><h2>آخر قيود الشركاء</h2></div></header><div class="table-responsive"><table><thead><tr><th>التاريخ</th><th>الشريك</th><th>النوع</th><th>القيمة</th></tr></thead><tbody><?php foreach($ledger as $r):?><tr><td dir="ltr"><?= h($r['effective_date']) ?></td><td><?= h($r['partner_name']) ?></td><td><?= $r['account_kind']==='CAPITAL'?'رأس مال':'أرباح' ?><small><?= h($r['entry_type']) ?></small></td><td dir="ltr" class="<?= $r['direction']==='CREDIT'?'positive':'negative' ?>"><?= $r['direction']==='CREDIT'?'+':'-' ?><?= number_format((float)$r['amount'],2) ?></td></tr><?php endforeach;?><?php if(!$ledger):?><tr><td colspan="4" class="empty">لا توجد قيود.</td></tr><?php endif;?></tbody></table></div></section></div>
</div></section></div><script>document.getElementById('fpMode')?.addEventListener('change',function(){document.getElementById('fpPartner').disabled=this.value==='ALL'});</script><?php include __DIR__.'/footer.php';?>
