OK (webhook returned: getMessage()); } } tg_send_message($chat_id, "✅ رسید شما دریافت و به حسابداری ارسال شد."); echo "OK"; exit; } if($txt==='/start'){ main_menu($chat_id); echo "OK"; exit; } if($txt==='/ping'){ echo "OK"; exit; } main_menu($chat_id); echo "OK"; exit; } if(isset($u['callback_query'])){ $cb = $u['callback_query']; $data = $cb['data'] ?? ''; $chat_id = $cb['from']['id'] ?? ($cb['message']['chat']['id'] ?? null); $mid = $cb['message']['message_id'] ?? null; if(isset($cb['id'])) @tg_answer_cbq($cb['id']); if(!$chat_id){ echo "OK"; exit; } if($data==='home'){ main_menu($chat_id,$mid); echo "OK"; exit; } // Store if($data==='store:root'){ store_root($chat_id,$mid); echo "OK"; exit; } if(strpos($data,'store:item:')===0){ $code=explode(':',$data,3)[2]??''; store_item($chat_id,$mid,$code); echo "OK"; exit; } if(strpos($data,'store:sign:')===0){ $code=explode(':',$data,3)[2]??''; $res = create_contract_and_invoice($chat_id,$code); if(is_array($res) && !empty($res['invoice_id'])){ $iid=intval($res['invoice_id']); tg_edit_message($chat_id,$mid,"🧾 فاکتور ایجاد شد (#{$iid}).", kb([[['text'=>'مشاهده فاکتور','callback_data'=>"cust:invoice:{$iid}"]] ])); } else { tg_edit_message($chat_id,$mid,"❌ خطا در ایجاد قرارداد/فاکتور.", kb([[['text'=>'🏠 خانه','callback_data'=>'home']]])); } echo "OK"; exit; } if(strpos($data,'cust:invoice:')===0){ $iid=intval(explode(':',$data,3)[2]??0); customer_invoice_view($chat_id,$mid,$iid); echo "OK"; exit; } if(strpos($data,'pay:send_receipt:')===0){ $iid=intval(explode(':',$data,3)[2]??0); tg_edit_message($chat_id,$mid,"لطفاً تصویر رسید فاکتور #{$iid} را ارسال کنید.", kb([[['text'=>'🏠 خانه','callback_data'=>'home']]])); echo "OK"; exit; } // Customer if($data==='cust:contracts'){ customer_contracts($chat_id,$mid); echo "OK"; exit; } if($data==='cust:invoices'){ customer_invoices($chat_id,$mid); echo "OK"; exit; } // Accountant if($data==='acc:pending_receipts'){ acc_pending_receipts($chat_id,$mid); echo "OK"; exit; } if(strpos($data,'acc:rcpt:')===0){ $pid=intval(explode(':',$data,3)[2]??0); acc_receipt_view($chat_id,$mid,$pid); echo "OK"; exit; } if(strpos($data,'acc:rcpt_approve:')===0){ $pid=intval(explode(':',$data,3)[2]??0); acc_receipt_approve($chat_id,$mid,$pid); echo "OK"; exit; } if(strpos($data,'acc:rcpt_reject:')===0){ $pid=intval(explode(':',$data,3)[2]??0); acc_receipt_reject($chat_id,$mid,$pid); echo "OK"; exit; } // Department Manager - Offish if($data==='dep:offish'){ dep_offish_menu($chat_id,$mid); echo "OK"; exit; } if(strpos($data,'offish:new:')===0){ $team_id=intval(explode(':',$data,3)[2]??0); dep_offish_new($chat_id,$mid,$team_id); echo "OK"; exit; } if(strpos($data,'offish:confirm:')===0){ $oid=intval(explode(':',$data,3)[2]??0); dep_offish_confirm($chat_id,$mid,$oid); echo "OK"; exit; } if(strpos($data,'offish:approve:')===0){ $oid=intval(explode(':',$data,3)[2]??0); dep_offish_approve($chat_id,$mid,$oid); echo "OK"; exit; } if(strpos($data,'offish:reject:')===0){ $oid=intval(explode(':',$data,3)[2]??0); dep_offish_reject($chat_id,$mid,$oid); echo "OK"; exit; } if(strpos($data,'offish:arrived:')===0){ $oid=intval(explode(':',$data,3)[2]??0); dep_offish_arrived($chat_id,$mid,$oid); echo "OK"; exit; } if(strpos($data,'offish:finish:')===0){ $oid=intval(explode(':',$data,3)[2]??0); dep_offish_finish($chat_id,$mid,$oid); echo "OK"; exit; } // Tasks if($data==='sc:tasks'){ sc_tasks($chat_id,$mid); echo "OK"; exit; } if($data==='ed:tasks'){ ed_tasks($chat_id,$mid); echo "OK"; exit; } if($data==='ad:tasks'){ ad_tasks($chat_id,$mid); echo "OK"; exit; } if(strpos($data,'task:done:')===0){ $tid=intval(explode(':',$data,3)[2]??0); task_done($chat_id,$mid,$tid); echo "OK"; exit; } // Calendar content if($data==='dep:calendar'){ dep_calendar_menu($chat_id,$mid); echo "OK"; exit; } // Penalty if($data==='dep:penalty'){ dep_penalty_menu($chat_id,$mid); echo "OK"; exit; } if(strpos($data,'pen:req:')===0){ $uid=intval(explode(':',$data,3)[2]??0); pen_request($chat_id,$mid,$uid); echo "OK"; exit; } if(strpos($data,'pen:approve:')===0){ $pid=intval(explode(':',$data,3)[2]??0); pen_approve($chat_id,$mid,$pid); echo "OK"; exit; } if(strpos($data,'pen:reject:')===0){ $pid=intval(explode(':',$data,3)[2]??0); pen_reject($chat_id,$mid,$pid); echo "OK"; exit; } // Reports if($data==='ceo:reports'){ ceo_reports($chat_id,$mid); echo "OK"; exit; } if($data==='acc:reports'){ acc_reports($chat_id,$mid); echo "OK"; exit; } if($data==='dep:reports'){ dep_reports($chat_id,$mid); echo "OK"; exit; } tg_edit_message($chat_id,$mid,"این گزینه فعلاً پشتیبانی نشده است. از منوی اصلی استفاده کنید.", kb([[['text'=>'🏠 خانه','callback_data'=>'home']]])); echo "OK"; exit; } echo "OK"; exit; }catch(Throwable $e){ error_log("FATAL: ".$e->getMessage()); echo "OK"; exit; } )