K3 采购订单实现通过登陆用户的用户组来判断,对相关字段进行隐藏

采购部门要求K3实现只能她们才能看到订单单价和金额,还要求只能她们才能看到供应商信息。
原本只要通过设置自带的金额查看权(在“用户权限”的“高级”中设置)就能满足要求,但还要隐藏供应商信息。由于采购订单是工业老单,基本思路是先取登陆用户信息,然后判断用户组来实现隐藏,但网上资料较少,找得比较辛苦。
先参考https://www.cnblogs.com/zhugq02/p/11236741.html来对获取用户信息

在这里插入图片描述
MMTS中的代码复制过来就行了。

类模块Hide_amount的代码如下:

 
'定义插件对象接口. 必须具有的声明, 以此来获得事件
Private WithEvents m_BillTransfer   As K3BillTransfer.Bill
Private rs As ADODB.Recordset
Private cn As ADODB.Connection
Private userid As String



 
Public Sub Show(ByVal oBillTransfer As Object)
 
    '接口实现
    '注意: 此方法必须存在, 请勿修改
    Set m_BillTransfer = oBillTransfer
 
End Sub

Private Sub m_BillTransfer_BillInitialize()
  Dim strs As String, stra As String, strb As String
  Dim numb1 As Integer, numb2 As Integer
  '获取登陆用户ID
  strs = PropsString()
  numb1 = InStr(1, strs, "UserName=")
  stra = Mid(strs, numb1, 30)
  numb2 = InStr(1, stra, "UserID=")
  userid = Mid(stra, numb2 + 7, 5)

'  MsgBox "userid:" & userid

''K3连接数据库
    Set cn = New ADODB.Connection
    cn.CursorLocation = adUseClient
    cn.Open m_BillTransfer.Cnnstring

End Sub
Private Sub Class_Terminate()
 
    '释放接口对象
    '注意: 此方法必须存在, 请勿修改
    Set m_BillTransfer = Nothing

End Sub

Private Sub m_BillTransfer_LoadBillEnd(ByVal ShowType As Long)

Dim vsEntrys As Object
Dim i As Long, j As Long
Dim strsql As String
Dim numb As Integer
Dim THeadCtl As Variant
 
    'TODO: 请在此处添加代码响应事件 LoadBillEnd
 


Set rs = New ADODB.Recordset
'14成本会计,16供应部
strsql = "select numb=count(*) from t_user t1 inner join t_group t2 on t1.fuserid=t2.fuserid  and t2.fgroupid in (14,16)" & _
"Where t1.fuserid > 100 And t1.fuserid = " & CInt(userid) 
 
rs.Open strsql, cn

' MsgBox "数量有" & rs("numb")
 
If rs("numb").Value > 0 Then
GoTo out
Else
    
    Set vsEntrys = m_BillTransfer.Grid '装入单据体
    
    For i = 1 To UBound(m_BillTransfer.EntryCtl)
     '隐藏金额、单价、价税合计、含税单价,列宽置0
     If UCase(m_BillTransfer.EntryCtl(i).FieldName) = UCase("FAMOUNT") _
     Or UCase(m_BillTransfer.EntryCtl(i).FieldName) = UCase("Fauxprice") _
     Or UCase(m_BillTransfer.EntryCtl(i).FieldName) = UCase("FAllAmount") _
     Or UCase(m_BillTransfer.EntryCtl(i).FieldName) = UCase("FAuxPriceDiscount") _
     Or UCase(m_BillTransfer.EntryCtl(i).FieldName) = UCase("FAuxTaxPrice") Then
         With vsEntrys
            .col = i
            .Col2 = i
            .Row = -1
            .BlockMode = True
            .Lock = True
            .BlockMode = False
            .ColWidth(i) = 0
        End With
     End If
    Next i
    
  i = 0
  THeadCtl = m_BillTransfer.m_HeadCtl  '装入单据头
   
   '隐藏供应商
   For i = 0 To UBound(THeadCtl)
    If UCase(THeadCtl(i).FieldName) = UCase("FSupplyID") Then
      If Len(THeadCtl(i).Name) > 0 Then
         m_BillTransfer.Head(i).Text = "**********"
      End If
      Exit For
    End If
   Next
    
    
    
out:
End If


End Sub

效果如下(隐藏金额的就不发了)
在这里插入图片描述

但有个BUG,就是单据反审核后,供应商能显示出来,但重新审核变*了,到时再研究

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-02 19:14:08       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-02 19:14:08       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-02 19:14:08       87 阅读
  4. Python语言-面向对象

    2024-04-02 19:14:08       96 阅读

热门阅读

  1. 打造专属wow服务器配置需求!

    2024-04-02 19:14:08       36 阅读
  2. 前端低代码平台的使用学习

    2024-04-02 19:14:08       30 阅读
  3. Qt实现Kermit协议(二)

    2024-04-02 19:14:08       38 阅读
  4. C++中重载和重写的区别

    2024-04-02 19:14:08       35 阅读
  5. 解密SFP和QSFP:你需要知道的一切

    2024-04-02 19:14:08       42 阅读
  6. Git使用

    2024-04-02 19:14:08       39 阅读
  7. 每日一题: 为什么要使用Spring?

    2024-04-02 19:14:08       38 阅读
  8. 【数据库】[MYSQL][面试题]常见数据库知识整理

    2024-04-02 19:14:08       34 阅读
  9. C++ map 常用部分

    2024-04-02 19:14:08       41 阅读
  10. 【zml】vp9 vp8

    2024-04-02 19:14:08       36 阅读
  11. 简单的HTML

    2024-04-02 19:14:08       32 阅读