后台成本价、销售价、利润点按费用逐行展示,费用合计用报价官方总价。选完线路只关页面。报价单文件名带上模板名,空运起运地和转人工跟对应工单走。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-05 12:33:34 +08:00
co-authored by Cursor
parent 7c77e45e03
commit e95e8869a6
30 changed files with 1926 additions and 75 deletions
+8 -3
View File
@@ -778,7 +778,10 @@ def _render_and_send_sheet(
if not result.get("ok"):
logger.warning("群填表失败 wo=%s line=%s err=%s", work_order_no, line, result.get("error"))
return result
filename = str(result.get("fileName") or f"{work_order_no}_quote.xlsx")
from agent.quote_templates.filename import filename_from_render
# 群里文件名:工单号 + 后台模板名 + .xlsx。调价后再发也是这个名字。
filename = filename_from_render(work_order_no, result)
sender = getattr(client, "send_group_file", None)
if not callable(sender):
logger.warning("群发文件无客户端 wo=%s chat=%s", work_order_no, chat_id)
@@ -1039,6 +1042,8 @@ def _persist_quote_sheet(
if sess is not None and getattr(sess, "collab_facts", None):
collab.update(dict(sess.collab_facts or {}))
renderer = getattr(flow.ledger, "render_quote", None)
from agent.quote_templates.filename import filename_from_render
filename = f"{no}_quote.xlsx"
object_key = filename
line = str(
@@ -1062,8 +1067,8 @@ def _persist_quote_sheet(
),
) or {}
if result.get("ok"):
filename = str(result.get("fileName") or filename)
object_key = str(result.get("objectKey") or result.get("fileName") or filename)
filename = filename_from_render(no, result)
object_key = str(result.get("objectKey") or filename)
_archive_file(flow, no, filename, {"media_id": object_key}, sender_id)