⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bos_billevent_plugins.cls

📁 在一些大型电器设备生产制造行业
💻 CLS
字号:
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "BOS_BillEvent_PlugIns"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
Attribute VB_Description = "This is BillEvent Interface Class, made by K3BOSPLUGINSWIZAED"
 
'定义 BillEvent 接口. 必须具有的声明, 以此来获得事件
Private WithEvents m_BillInterface  As BillEvent
Attribute m_BillInterface.VB_VarHelpID = -1

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

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

End Sub

Private Sub m_BillInterface_AfterDoAction(ByVal dct As KFO.IDictionary, ByVal dctFld As KFO.IDictionary, ByVal ItemObj As Object, ByVal ActionTypeName As String, ByVal ActionName As String, ByVal Paremeters As String)
'    m_BillInterface.BillStatus
'    If dct("FFieldName") = "FConfigItem" Then
'        Dim PramDict As KFO.Dictionary
'
'        Set PramDict = m_BillInterface.GetFieldInfoByKey("FAmount", "", -1)
'        m_BillInterface.SetFieldValue "FAmount", m_BillInterface.Sum(PramDict)
'        If m_BillInterface.GetFieldValue("FInteger", -1, Enu_ValueType_FFLD) <> 0 Then
'            m_BillInterface.SetFieldValue "FPrice", m_BillInterface.Sum(PramDict) / m_BillInterface.GetFieldValue("FInteger", -1, Enu_ValueType_FFLD)
'        End If
'    End If
End Sub

Private Sub m_BillInterface_Change(ByVal dct As KFO.IDictionary, ByVal dctFld As KFO.IDictionary, ByVal Col As Long, ByVal Row As Long, Cancel As Boolean)
    Dim PramDict As KFO.Dictionary
    Dim oReturnDict As KFO.Dictionary
    Dim iOldQty As Long
    Dim i As Long
    Dim v As KFO.Vector
    On Error Resume Next
    If UCase(dct("FFieldName")) = UCase("FItem") Then
        If dctFld("FFLD") <> 0 Then
            Set PramDict = New KFO.Dictionary
            '显示模式(0-查看,1-修改)
            PramDict("ShowMode") = 1                                    '1为修改模式 0为查看
            PramDict("Filter") = " t1.FItemID=" & dctFld("FFLD")        '物料过滤条件
            PramDict("Filter1") = ""                                    '其他过滤条件
            PramDict("FCustID") = m_BillInterface.GetFieldValue("FCustomer", -1, Enu_ValueType_FFLD)    '客户内码
            
            Dim objSrv As Object
            Set objSrv = m_BillInterface.K3Lib.CreateK3Object("K3BOM.GetBomInfo")
            Set oReturnDict = objSrv.GetBomList(PramDict)
            If Not (oReturnDict Is Nothing) Then
                If oReturnDict("FInterID") > 0 Then
                    m_BillInterface.SetFieldValue "FBOMVer", oReturnDict("FBomNumber")
                    FillEntryWithBOMVer oReturnDict("FInterID")
                End If
            End If
        End If
    ElseIf UCase(dct("FFieldName")) = UCase("FInteger") Then
        Set v = m_BillInterface.Data("Page2")
        For i = v.LBound To v.UBound
            iOldQty = m_BillInterface.GetFieldValue("FQty", i)
            m_BillInterface.SetFieldValue "FQty", iOldQty * dctFld("FFLD"), i
            m_BillInterface.SetFieldValue "FAmount", iOldQty * dctFld("FFLD") * m_BillInterface.GetFieldValue(("FPrice"), i), i
            
        Next i
        Set PramDict = m_BillInterface.GetFieldInfoByKey("FAmount", "", -1)
        m_BillInterface.BillCtl.setsumdata PramDict
'        m_BillInterface.SetSumDecimal PramDict, 2
'        m_BillInterface.PramDict
        
'        m_BillInterface.SetFieldValue "FAmount", m_BillInterface.Sum(PramDict)
'
'        m_BillInterface.RefreshBill
    End If
End Sub

Private Sub m_BillInterface_HeadCtlClick(ByVal ctl As Object, ByVal dct As KFO.IDictionary)
    Dim PramDict As KFO.Dictionary
    Dim oReturnDict As KFO.Dictionary
    If UCase(dct("FFieldName")) = UCase("FBOMVer") Then
        If m_BillInterface.GetFieldValue("FItem", -1, Enu_ValueType_FFLD) <> 0 Then
            Set PramDict = New KFO.Dictionary
            '显示模式(0-查看,1-修改)
            PramDict("ShowMode") = 1                                    '1为修改模式 0为查看
            PramDict("Filter") = " t1.FItemID=" & m_BillInterface.GetFieldValue("FItem", -1, Enu_ValueType_FFLD)      '物料过滤条件
            PramDict("Filter1") = ""                                    '其他过滤条件
            PramDict("FCustID") = m_BillInterface.GetFieldValue("FCustomer", -1, Enu_ValueType_FFLD)    '客户内码
            
            Dim objSrv As Object
            Set objSrv = m_BillInterface.K3Lib.CreateK3Object("K3BOM.GetBomInfo")
            Set oReturnDict = objSrv.GetBomList(PramDict)
            If Not (oReturnDict Is Nothing) Then
                If oReturnDict("FInterID") > 0 Then
                    m_BillInterface.SetFieldValue "FBOMVer", oReturnDict("FBomNumber")
                    FillEntryWithBOMVer oReturnDict("FInterID")
'                    Set PramDict = m_BillInterface.GetFieldInfoByKey("FAmount", "", -1)
'                    m_BillInterface.SetFieldValue "FDecimal", m_BillInterface.Sum(PramDict)
                End If
            End If
        End If
    End If
End Sub


Private Sub FillEntryWithBOMVer(ByVal iBOMVerID As Long)
    Dim sSQL As String
    Dim i As Long
    Dim rs As ADODB.Recordset
    sSQL = "SELECT * FROM (SELECT a.FEntryID,b.FSalePrice,a.FInterID,b.FItemID,b.FNumber,b.FName AS FItemName,b.FModel,d.FName AS FBaseUnitID,w.Fname as FunitID, e.FName AS FMaterielType,f.FName AS FMarshalType,a.FAuxQty,a.FQty,a.FScrap,a.FBeginDay,a.FEndDay,a.FPercent,(case a.FOperSN when 0 then '' else cast(a.FOperSN as varchar(255)) end) FOperSN,j.FName AS FOperID,a.FMachinePos,a.FOffSetDay,CASE a.FBackFlush WHEN 1059 THEN '否' ELSE '是' END AS FBackFlush,CASE b.FIsKeyItem WHEN 0 THEN '否' ELSE '是' END AS FIsKeyItem,CASE h.FDeleted WHEN 0 THEN '否' ELSE '是' END AS FForbitUse,g.FName AS FUseState,i.FName AS FSPID,c.FName AS FStockID,a.FNote,b.FQtyDecimal ,v.FName AS FErpClsName, u.FBomNumber  FROM ICCustBOMChild a "
    sSQL = sSQL & " inner join t_ICItem b on a.FItemID = b.FItemID "
    sSQL = sSQL & " left join (SELECT FItemID,FName FROM t_Stock UNION SELECT 0 AS FItemID,'' AS FName) c on ISNULL(a.FStockID,0) = c.FItemID "
    sSQL = sSQL & " left join t_MeasureUnit d on b.FUnitID = d.FItemID "
    sSQL = sSQL & " left join t_SubMessage e on a.FMaterielType = e.FInterID "
    sSQL = sSQL & " left join t_SubMessage f on a.FMarshalType= f.FInterID "
    sSQL = sSQL & " left join t_SubMessage g on b.FUseState = g.FInterID "
    sSQL = sSQL & " left join t_Item h on b.FItemID = h.FItemID "
    sSQL = sSQL & " left join t_StockPlace i on a.FSPID = i.FSPID "
    sSQL = sSQL & " left join t_SubMessage j on a.FOperID = j.FInterID and j.FTypeID = 61 "
    sSQL = sSQL & " left join t_MeasureUnit w on a.FunitID=w.FitemID "
    sSQL = sSQL & " left outer join t_SubMessage v on b.FErpClsID=v.FInterID "
    sSQL = sSQL & " left outer join ICBOM u on u.FInterID=a.FCustBomCode) t1 "
    sSQL = sSQL & " WHERE FInterID=" & iBOMVerID & " ORDER BY FEntryID "
    Set rs = m_BillInterface.K3Lib.GetData(sSQL)
    If Not rs.EOF Then m_BillInterface.DeleteEntryData 1
    i = 1
    Do While Not rs.EOF
        m_BillInterface.InsertNewRowAndFill 2, i, "FConfigItem", CStr(rs("FNumber")), "FQty", rs("FQty"), "FPrice", rs("FSalePrice"), "FAmount", rs("FQty") * rs("FSalePrice")
        rs.MoveNext
        i = i + 1
    Loop
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -