e树erp吧 关注:102贴子:1,132
  • 4回复贴,共1

客户报价单,多个地址怎么选择

只看楼主收藏回复

做客户报价单时,客户有多个地址和采购对接人怎样才能手动选择不同的地址和采购对接人信息


IP属地:江苏1楼2025-08-28 13:58回复
    报价单,不支持多地址。(系统目前,不支持不同报价地址,不同价格)
    只有销售订单,下单时, 才支持多地址。
    (在客户资料维护那里,预先设置多个地址,然后销售单维护时,可下拉选择其中一个地址)


    IP属地:福建2楼2025-08-28 21:27
    回复
      2026-08-05 18:21:40
      广告
      不感兴趣
      开通SVIP免广告
      -- 1. 先删除已存在的永久表(避免冲突)
      IF OBJECT_ID('DBO.DBO.CUSTOMER_CONTACTS') IS NOT NULL
      DROP TABLE DBO.CUSTOMER_CONTACTS
      -- 2. 创建【永久表】
      CREATE TABLE DBO.CUSTOMER_CONTACTS
      (
      [SEQ] [int] IDENTITY(1, 1) NOT NULL, -- 自增序号
      [CUSTOMER_ID] NVARCHAR(50), -- 客户ID
      [CONTACT1] NVARCHAR(100), -- 联系人1
      [CONTACT2] NVARCHAR(100), -- 联系人2
      [CONTACT3] NVARCHAR(100) -- 联系人3
      )
      ON [PRIMARY]
      -- 3. 为永久表创建索引
      CREATE UNIQUE INDEX IDX_TMP_CONTACTS_SEQ ON DBO.CUSTOMER_CONTACTS (SEQ)
      CREATE INDEX IDX_TMP_CONTACTS_CUSTID ON DBO.CUSTOMER_CONTACTS (CUSTOMER_ID)
      -- 4. 插入数据到永久表
      INSERT INTO DBO.CUSTOMER_CONTACTS
      (
      [CUSTOMER_ID],
      [CONTACT1],
      [CONTACT2],
      [CONTACT3]
      )
      SELECT
      CUSTOMER.ID AS [CUSTOMER_ID],
      CUSTOMER.CONTACTER AS [CONTACT1],
      CUSTOMER.CONTACTER2 AS [CONTACT2],
      CUSTOMER.CONTACTER3 AS [CONTACT3]
      FROM CUSTOMER
      WHERE CUSTOMER.ID = '%ScreenCompStrVal.客户代号%'
      --SELECT * FROM DBO.CUSTOMER_CONTACTS --测试永久表查找结果
      -- 5. 声明变量(不变)
      DECLARE @HasGroup2Data BIT = 0
      DECLARE @HasGroup3Data BIT = 0
      DECLARE @SelectedGroup INT = 1
      -- 6. 检测分组数据完备性(不变)
      SELECT
      @HasGroup2Data = CASE WHEN NULLIF(RTRIM(CONVERT(NVARCHAR(MAX),ADDRESS2)),'') IS NOT NULL
      AND NULLIF(RTRIM(CONVERT(NVARCHAR(100),CONTACTER2)),'') IS NOT NULL
      AND NULLIF(RTRIM(CONVERT(NVARCHAR(50),TEL2)),'') IS NOT NULL THEN 1 ELSE 0 END,
      @HasGroup3Data = CASE WHEN NULLIF(RTRIM(CONVERT(NVARCHAR(MAX),ADDRESS3)),'') IS NOT NULL
      AND NULLIF(RTRIM(CONVERT(NVARCHAR(100),CONTACTER3)),'') IS NOT NULL
      AND NULLIF(RTRIM(CONVERT(NVARCHAR(50),TEL3)),'') IS NOT NULL THEN 1 ELSE 0 END
      FROM CUSTOMER
      WHERE CONVERT(NVARCHAR(20),ID) = CONVERT(NVARCHAR(20),'%ScreenCompStrVal.客户代号%')
      -- 7. 动态选择逻辑(核心:引用永久表,表名不变)
      IF @HasGroup2Data = 1 OR @HasGroup3Data = 1
      BEGIN
      SET @SelectedGroup = (
      %UserInputPopTree.请选择联系人
      ^1^
      SELECT
      field_name AS '字段名称',
      field_value AS '值',
      CASE field_name
      WHEN '联系人1' THEN '1'
      WHEN '联系人2' THEN '2'
      WHEN '联系人3' THEN '3'
      END AS '选项编号'
      FROM DBO.CUSTOMER_CONTACTS
      CROSS APPLY (
      VALUES
      ('联系人1', CONTACT1),
      ('联系人2', CONTACT2),
      ('联系人3', CONTACT3)
      ) AS unpivoted(field_name, field_value)
      ^只能是下拉中的值;指定第几列为关键值:2;只能选择最底层;大写;限制长度:30%
      )
      END
      -- 8. 动态输出结果(不变)
      SELECT
      ID AS '客户代号',
      CASE @SelectedGroup
      WHEN 1 THEN ADDRESS
      WHEN 2 THEN ADDRESS2
      WHEN 3 THEN ADDRESS3
      END AS '详细地址',
      CASE @SelectedGroup
      WHEN 1 THEN CONTACTER
      WHEN 2 THEN CONTACTER2
      WHEN 3 THEN CONTACTER3
      END AS '联系人',
      CASE @SelectedGroup
      WHEN 1 THEN TEL
      WHEN 2 THEN TEL2
      WHEN 3 THEN TEL3
      END AS '电话号码',
      CASE @SelectedGroup
      WHEN 1 THEN FAX
      WHEN 2 THEN FAX2
      WHEN 3 THEN FAX3
      END AS '传真号码',
      CASE @SelectedGroup
      WHEN 1 THEN EMAIL
      WHEN 2 THEN EMAIL2
      WHEN 3 THEN EMAIL3
      END AS '邮箱地址'
      FROM CUSTOMER
      WHERE CONVERT(NVARCHAR(20),ID) = CONVERT(NVARCHAR(20),'%ScreenCompStrVal.客户代号%')
      -- 9. 删除永久表
      DROP TABLE DBO.CUSTOMER_CONTACTS


      IP属地:江苏3楼2025-09-05 23:39
      回复


        以上代码运行出现错误,可以帮忙改一下吗


        IP属地:江苏4楼2025-09-05 23:43
        回复
          代码太长了。并且没有缩进格式,看起来非常吃力。
          建议你走正常的“客户资料导入”模块。不要用SQL去后台改数据。(也可能数据会被你改废掉)


          IP属地:福建5楼2025-09-10 09:13
          回复