| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- """合同名称按供需方面板(partyA/partyB)解析简称。"""
- from app.crud.crm.contract import generate_contract_name, resolve_party_short_name
- def test_resolve_matches_supplier_exact_name():
- assert (
- resolve_party_short_name(
- "安庆市山峡化工有限公司",
- supplier_name="安庆市山峡化工有限公司",
- supplier_short_name="山峡",
- customer_name="安徽辉隆农资集团股份有限公司",
- customer_short_name="辉隆",
- )
- == "山峡"
- )
- def test_resolve_matches_customer_exact_name():
- assert (
- resolve_party_short_name(
- "安徽辉隆农资集团股份有限公司",
- supplier_name="安庆市山峡化工有限公司",
- supplier_short_name="山峡",
- customer_name="安徽辉隆农资集团股份有限公司",
- customer_short_name="辉隆",
- )
- == "辉隆"
- )
- def test_resolve_matches_customer_invoice_name():
- assert (
- resolve_party_short_name(
- "辉隆开票公司",
- supplier_name="安庆市山峡化工有限公司",
- supplier_short_name="山峡",
- customer_name="安徽辉隆农资集团股份有限公司",
- customer_short_name="辉隆",
- customer_invoice_name="辉隆开票公司",
- )
- == "辉隆"
- )
- def test_resolve_fallback_to_party_full_name():
- assert (
- resolve_party_short_name(
- "第三方单位",
- supplier_name="安庆市山峡化工有限公司",
- supplier_short_name="山峡",
- customer_name="安徽辉隆农资集团股份有限公司",
- customer_short_name="辉隆",
- )
- == "第三方单位"
- )
- def test_resolve_does_not_fuzzy_match_short_inside_longer_name():
- """避免「山峡」子串误匹配客户全称中的山峡二字到交易主体。"""
- assert (
- resolve_party_short_name(
- "安庆市山峡化工有限公司",
- supplier_name="其他主体",
- supplier_short_name="山峡",
- customer_name="安庆市山峡化工有限公司",
- customer_short_name="山峡客户",
- )
- == "山峡客户"
- )
- def test_generate_empty_uses_party_order_after_swap():
- """调换后供方=辉隆、需方=山峡 → 辉隆-山峡(编号),不因类型反序。"""
- name = generate_contract_name(
- "SX/X-JT20260804001",
- party_a="安徽辉隆农资集团股份有限公司",
- party_b="安庆市山峡化工有限公司",
- supplier_name="安庆市山峡化工有限公司",
- supplier_short_name="山峡",
- customer_name="安徽辉隆农资集团股份有限公司",
- customer_short_name="辉隆",
- user_contract_name="",
- )
- assert name == "辉隆-山峡(SX/X-JT20260804001)"
- def test_generate_empty_default_party_order():
- name = generate_contract_name(
- "SX/X-JT20260804001",
- party_a="安庆市山峡化工有限公司",
- party_b="安徽辉隆农资集团股份有限公司",
- supplier_name="安庆市山峡化工有限公司",
- supplier_short_name="山峡",
- customer_name="安徽辉隆农资集团股份有限公司",
- customer_short_name="辉隆",
- user_contract_name="",
- )
- assert name == "山峡-辉隆(SX/X-JT20260804001)"
- def test_generate_purchase_does_not_reverse_party_order():
- name = generate_contract_name(
- "SX/X-JT20260804001",
- party_a="安徽辉隆农资集团股份有限公司",
- party_b="安庆市山峡化工有限公司",
- supplier_name="安庆市山峡化工有限公司",
- supplier_short_name="山峡",
- customer_name="安徽辉隆农资集团股份有限公司",
- customer_short_name="辉隆",
- user_contract_name="",
- contract_type="purchase",
- )
- assert name == "辉隆-山峡(SX/X-JT20260804001)"
- def test_generate_user_name_keeps_body_and_syncs_no():
- name = generate_contract_name(
- "SX/X-JT20260804002",
- party_a="安徽辉隆农资集团股份有限公司",
- party_b="安庆市山峡化工有限公司",
- supplier_name="安庆市山峡化工有限公司",
- supplier_short_name="山峡",
- customer_name="安徽辉隆农资集团股份有限公司",
- customer_short_name="辉隆",
- user_contract_name="自定义合同名(SX/X-JT20260804001)",
- )
- assert name == "自定义合同名(SX/X-JT20260804002)"
- def test_generate_full_party_name_in_user_input_is_replaced_by_short():
- """前端误传全称时,后端按主数据简称重算(华尔泰生产案例)。"""
- name = generate_contract_name(
- "YD/X-JT20260731003",
- party_a="安徽华尔泰股份有限公司",
- party_b="安徽云栋化工有限公司",
- supplier_name="安徽云栋化工有限公司",
- supplier_short_name="云栋",
- customer_name="安徽华尔泰股份有限公司",
- customer_short_name="华尔泰",
- user_contract_name="安徽华尔泰股份有限公司-云栋(YD/X-JT20260731003)",
- )
- assert name == "华尔泰-云栋(YD/X-JT20260731003)"
- def test_generate_renewal_name_is_preserved():
- name = generate_contract_name(
- "YD/X-JT20260804001",
- party_a="安徽华尔泰股份有限公司",
- party_b="安徽云栋化工有限公司",
- supplier_name="安徽云栋化工有限公司",
- supplier_short_name="云栋",
- customer_name="安徽华尔泰股份有限公司",
- customer_short_name="华尔泰",
- user_contract_name="华尔泰-云栋(YD/X-JT20260731003)-续签1",
- )
- assert name == "华尔泰-云栋(YD/X-JT20260731003)-续签1(YD/X-JT20260804001)"
- def test_generate_fallback_when_parties_blank():
- name = generate_contract_name(
- "SX/X-JT20260804001",
- party_a="",
- party_b="",
- supplier_short_name="山峡",
- customer_short_name="辉隆",
- user_contract_name="",
- )
- assert name == "合同(SX/X-JT20260804001)"
|