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

📄 clsstocktaking.cls

📁 金算盘软件代码
💻 CLS
📖 第 1 页 / 共 3 页
字号:
'    Loop
'    recTmp.Close
'    Set recTmp = Nothing
    DeletePositionItemDetail = 1
    Exit Function
DeleteErr:
    DeletePositionItemDetail = -1
End Function

'改变Item中的 最近采购单据子表ID、最高采购价格单据子表ID、最低采购价格单据子表ID、最近采购价格、最高采购价格、最底采购价格
Private Function ChangeItemInfo() As Integer
    Dim strSql As String
    Dim recTemp As rdoResultset
    Dim recTemp_1 As rdoResultset
    Dim lngActivityDetailID As Long
    Dim lngItemID As Long
    Dim lngTempID As Long
    Dim dblTempPrice As Double
    Dim dblQuantity As Double
    Dim lngPositionID As Long
    Dim dblCurrPrice_Temp As Double
    On Error GoTo TheErr

    strSql = "SELECT ItemActivityDetail.lngActivityDetailID, ItemActivityDetail.lngItemID, ItemActivityDetail.dblQuantity, " _
           & " Item.lngRecentPurchaseDetailID," _
           & " Item.lngMaxPurchasePriceDetailID," _
           & " Item.lngMinPurchasePriceDetailID," _
           & " Item.dblRecenetPurchasePrice," _
           & " Item.dblMaxPurchasePrice," _
           & " Item.dblMinPurchasePrice,Item.lngItemID AS ModifyID" _
           & " FROM Item ,ItemActivityDetail where Item.lngItemID = ItemActivityDetail.lngItemID" _
           & " AND (((ItemActivityDetail.lngActivityID)=" & lngActivityID & ")) ORDER BY ItemActivityDetail.lngItemID "
    Set recTemp = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
    If recTemp.BOF And recTemp.EOF Then
'        cMsgBox "不能从数据库中找到" & strBillNO & strTypeName & "单据中的商品,删除失败!"
        Exit Function
    End If
    With recTemp
        .MoveFirst
        Do While Not .EOF
            lngActivityDetailID = .rdoColumns(0)
            lngItemID = .rdoColumns(1)
            dblQuantity = .rdoColumns(2)
            
            '1)
            If .rdoColumns(0) = .rdoColumns(3) Then '当前ID是最近采购单据子表ID
                strSql = "SELECT Max(ItemActivityDetail.lngActivityDetailID) AS 表达式1" _
                       & " FROM ItemActivity , ItemActivityDetail WHERE ItemActivity.lngActivityID = ItemActivityDetail.lngActivityID" _
                       & " AND (((ItemActivity.lngActivityTypeID)=1) AND ((ItemActivityDetail.lngItemID)=" & lngItemID & ") AND ((ItemActivityDetail.lngActivityDetailID)<>" & lngActivityDetailID & "))"
                Set recTemp_1 = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
'                .Edit
                If (recTemp_1.BOF And recTemp_1.EOF) Or (IsNull(recTemp_1(0))) Then
                     
'                    .rdoColumns(3) = 0
'                    .rdoColumns(6) = 0
                     strSql = "UPDATE Item SET "
                     strSql = strSql & " lngRecentPurchaseDetailID=0 , dblRecenetPurchasePrice=0 "
                     strSql = strSql & " WHERE lngItemID=" & !ModifyID
                     If gclsBase.ExecSQL(strSql) = False Then
                        GoTo TheErr
                     End If
                Else
                    lngTempID = recTemp_1(0) '新的最近采购单据子表ID
                    Set recTemp_1 = Nothing
                    strSql = "SELECT ItemActivityDetail.dblCurrPrice From ItemActivityDetail WHERE (ItemActivityDetail.lngActivityDetailID)=" & lngTempID
                    Set recTemp_1 = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
                    If recTemp_1.BOF And recTemp_1.EOF Then Exit Function
                    
'                    .rdoColumns(3) = lngTempID
'                    .rdoColumns(6) = recTemp_1(0)     '最近采购价
                    strSql = "UPDATE Item SET "
                    strSql = strSql & " lngRecentPurchaseDetailID=" & lngTempID & " , dblRecenetPurchasePrice=" & recTemp_1(0)
                    strSql = strSql & " WHERE lngItemID=" & !ModifyID
                    Set recTemp_1 = Nothing
                     If gclsBase.ExecSQL(strSql) = False Then
                        GoTo TheErr
                     End If
                End If
'                .Update
            End If
            '2)
            If .rdoColumns(0) = .rdoColumns(4) Then '当前ID是最高采购价格单据子表ID
                strSql = "SELECT Max(ItemActivityDetail.dblCurrPrice) AS 表达式1" _
                       & " FROM ItemActivity , ItemActivityDetail WHERE ItemActivity.lngActivityID = ItemActivityDetail.lngActivityID" _
                       & " AND (((ItemActivity.lngActivityTypeID)=1) AND ((ItemActivityDetail.lngItemID)=" & lngItemID & ") AND ((ItemActivityDetail.lngActivityDetailID)<>" & lngActivityDetailID & "))"
                Set recTemp_1 = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
'                .Edit
                If (recTemp_1.BOF And recTemp_1.EOF) Or (IsNull(recTemp_1(0))) Then
'                    .rdoColumns(4) = 0
'                    .rdoColumns(7) = 0
                     strSql = "UPDATE Item SET "
                     strSql = strSql & " lngMaxPurchaseDetailID=0 , dblMaxPurchasePrice=0 "
                     strSql = strSql & " WHERE lngItemID=" & !ModifyID
                     If gclsBase.ExecSQL(strSql) = False Then
                        GoTo TheErr
                     End If
                Else
                    '通过最高价查找ID
                    dblCurrPrice_Temp = recTemp_1(0)
                    Set recTemp_1 = Nothing
                    strSql = "SELECT ItemActivityDetail.lngActivityDetailID " _
                           & " FROM ItemActivity , ItemActivityDetail WHERE ItemActivity.lngActivityID = ItemActivityDetail.lngActivityID " _
                           & " AND (((ItemActivityDetail.dblCurrPrice)=" & dblCurrPrice_Temp & ") AND ((ItemActivity.lngActivityTypeID)=1) AND ((ItemActivityDetail.lngItemID)=" & lngItemID & ") AND ((ItemActivityDetail.lngActivityDetailID)<>36))"
                    Set recTemp_1 = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
                    If recTemp_1.BOF And recTemp.EOF Then Exit Function
                    
'                    .rdoColumns(4) = recTemp_1(0)
'                    .rdoColumns(7) = dblCurrPrice_Temp
                    strSql = "UPDATE Item SET "
                    strSql = strSql & " lngMaxPurchaseDetailID=" & recTemp_1(0) & " , dblMaxPurchasePrice=" & dblCurrPrice_Temp
                    strSql = strSql & " WHERE lngItemID=" & !ModifyID
                    Set recTemp_1 = Nothing
                     If gclsBase.ExecSQL(strSql) = False Then
                        GoTo TheErr
                     End If
                End If
'                .Update
            End If
            '3)
            If .rdoColumns(0) = .rdoColumns(5) Then '当前ID是最低采购价格单据子表ID
                strSql = "SELECT Min(ItemActivityDetail.dblCurrPrice) AS 表达式1" _
                       & " FROM ItemActivity,ItemActivityDetail WHERE ItemActivity.lngActivityID = ItemActivityDetail.lngActivityID" _
                       & " AND (((ItemActivity.lngActivityTypeID)=1) AND ((ItemActivityDetail.lngItemID)=" & lngItemID & ") AND ((ItemActivityDetail.lngActivityDetailID)<>" & lngActivityDetailID & "))"
                Set recTemp_1 = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
'                .Edit
                If (recTemp_1.BOF And recTemp_1.EOF) Or (IsNull(recTemp_1(0))) Then
'                    .rdoColumns(5) = 0
'                    .rdoColumns(8) = 0
                     strSql = "UPDATE Item SET "
                     strSql = strSql & " lngMinPurchaseDetailID=0 , dblMinPurchasePrice=0 "
                     strSql = strSql & " WHERE lngItemID=" & !ModifyID
                     If gclsBase.ExecSQL(strSql) = False Then
                        GoTo TheErr
                     End If
                Else
                    '通过最低价查找ID
                    dblCurrPrice_Temp = recTemp_1(0)
                    Set recTemp_1 = Nothing
                    strSql = "SELECT ItemActivityDetail.lngActivityDetailID " _
                           & " FROM ItemActivity , ItemActivityDetail WHERE ItemActivity.lngActivityID = ItemActivityDetail.lngActivityID " _
                           & " AND (((ItemActivityDetail.dblCurrPrice)=" & dblCurrPrice_Temp & ") AND ((ItemActivity.lngActivityTypeID)=1) AND ((ItemActivityDetail.lngItemID)=" & lngItemID & ") AND ((ItemActivityDetail.lngActivityDetailID)<>36))"
                    Set recTemp_1 = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
                    If recTemp_1.BOF And recTemp.EOF Then Exit Function
                            
'                    .rdoColumns(5) = recTemp_1(0)
'                    .rdoColumns(8) = dblCurrPrice_Temp
                    strSql = "UPDATE Item SET "
                    strSql = strSql & " lngMinPurchaseDetailID=" & recTemp_1(0) & " , dblMinPurchasePrice=" & dblCurrPrice_Temp
                    strSql = strSql & " WHERE lngItemID=" & !ModifyID
                    Set recTemp_1 = Nothing
                     If gclsBase.ExecSQL(strSql) = False Then
                        GoTo TheErr
                     End If

                End If
'                .Update
            End If
            .MoveNext
        Loop
    End With
    ChangeItemInfo = 1
    If Not recTemp Is Nothing Then
        Set recTemp = Nothing
    End If
    If Not recTemp_1 Is Nothing Then
        Set recTemp_1 = Nothing
    End If
    Exit Function
TheErr:
    If Not recTemp Is Nothing Then
        Set recTemp = Nothing
    End If
    If Not recTemp_1 Is Nothing Then
        Set recTemp_1 = Nothing
    End If
    ChangeItemInfo = -1
End Function


'商品成本资料明细
'商品性质表中存在:成本方法
Private Function DeleteItemCostDetail() As Integer
    Dim strSql As String
'    Dim recTmp As rdoResultset
    DeleteItemCostDetail = 1
    
    Select Case lngActivityTypeID
        Case 9, 10
            strSql = "DELETE FROM ItemCostDetail WHERE ItemCostDetail.lngInActivityDetailID IN " & _
                " (SELECT ItemActivityDetail.lngActivityDetailID FROM ItemActivityDetail " & _
                " WHERE ItemActivityDetail.lngActivityID=" & lngActivityID & ")"
            If gclsBase.ExecSQL(strSql) = False Then DeleteItemCostDetail = -1
'''            strSql = "SELECT ItemCostDetail.lngItemID,ItemCostDetail.lngInActivityDetailID," _
'''                   & " ItemCostDetail.lngOutActivityDetailID,ItemCostDetail.dblQuantity,ItemCostDetail.dblAmount " _
'''                   & " FROM ItemCostDetail,ItemActivityDetail WHERE ItemCostDetail.lngInActivityDetailID = ItemActivityDetail.lngActivityDetailID " _
'''                   & " AND (((ItemActivityDetail.lngActivityID)=" & lngActivityID & "))"
'''            Set recTmp = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
'''            Do While Not recTmp.EOF
'''               strSql = "DELETE ItemCostDetail WHERE lngItemID=" & recTmp(0) & " AND lngInActivityDetailID=" & recTmp(1) _
'''                  & " AND lngOutActivityDetailID=" & recTmp(2) & " AND dblQuantity=" & recTmp(3) & " AND dblAmount=" & recTmp(4)
'''               If gclsBase.ExecSQL(strSql) = False Then
'''                  recTmp.Close
'''                  Set recTmp = Nothing
'''                  DeleteItemCostDetail = -1
'''                  Exit Do
'''               End If
'''               recTmp.MoveNext
'''            Loop
'''            recTmp.Close
'''            Set recTmp = Nothing
        Case Else
            strSql = "DELETE FROM ItemCostDetail WHERE ItemCostDetail.lngOutActivityDetailID IN " & _
                " (SELECT ItemActivityDetail.lngActivityDetailID FROM ItemActivityDetail " & _
                " WHERE ItemActivityDetail.lngActivityID=1" & lngActivityID & ")"
            If gclsBase.ExecSQL(strSql) = False Then DeleteItemCostDetail = -1
'''            strSql = "SELECT ItemCostDetail.lngItemID,ItemCostDetail.lngInActivityDetailID," _
'''                   & " ItemCostDetail.lngOutActivityDetailID,ItemCostDetail.dblQuantity,ItemCostDetail.dblAmount " _
'''                   & " FROM ItemCostDetail,ItemActivityDetail WHERE ItemCostDetail.lngOutActivityDetailID = ItemActivityDetail.lngActivityDetailID " _
'''                   & " AND (((ItemActivityDetail.lngActivityID)=" & lngActivityID & "))"
'''            Set recTmp = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
'''            Do While Not recTmp.EOF
'''               strSql = "DELETE ItemCostDetail WHERE lngItemID=" & recTmp(0) & " AND lngInActivityDetailID=" & recTmp(1) _
'''                  & " AND lngOutActivityDetailID=" & recTmp(2) & " AND dblQuantity=" & recTmp(3) & " AND dblAmount=" & recTmp(4)
'''               If gclsBase.ExecSQL(strSql) = False Then
'''                  recTmp.Close
'''                  Set recTmp = Nothing
'''                  DeleteItemCostDetail = -1
'''                  Exit Do
'''               End If
'''               recTmp.MoveNext
'''            Loop
'''            recTmp.Close
'''            Set recTmp = Nothing
    End Select
End Function

'//////////////////////////////////////结束:对照表处理////////////////////////////////////////////////////


'<接口>
'blnByVoid:删除功能由作废调用
Private Function DeletePurchase(arglngActivityID As Long, Optional blnByVoid As Boolean) As Boolean
    Dim strSql As String
    Dim recTemp As rdoResultset
    Dim intResult As Integer
    lngActivityID = arglngActivityID
    '-----------------------------------------
    Dim intYear As Integer '凭证会计年度
    Dim bytPeriod As Byte   '凭证会计期间
    Dim lngReceiptTypeID As Long
    Dim strReceiptNo As String
    Dim lngReceiptNo As Long
    On Error GoTo DeleteErr
    '------------------------------------------
    strSql = "SELECT ItemActivity.lngActivityTypeID, ItemActivity.blnIsVoid, Decode(ItemActivity.lngActivityTypeID,1,'商品采购',2,'直运采购',3,'受托入库',4,'受托结算',5,'加工入库',6,'加工费用',7,'采购发票',8,'自制入库',9,'盘盈入库',10,'其他入库') AS 采购类型 ,ItemActivity.* From ItemActivity WHERE (ItemActivity.lngActivityID)=" & lngActivityID
    Set recTemp = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
    If recTemp.BOF And recTemp.EOF Then
        DeletePurchase = True
        Set recTemp = Nothing
        Exit Function
    End If
    lngActivityTypeID = recTemp(0)
    blnIsVoid = (recTemp(1) <> 0)
    strTypeName = recTemp(2)
    '-------------------------------------------------------------------
    intYear = gclsBase.FYearOfDate(C2Date(recTemp!strDate))
    bytPeriod = gclsBase.PeriodOfDate(C2Date(recTemp!strDate))
    lngReceiptTypeID = recTemp!lngReceiptTypeID
    strReceiptNo = recTemp!strReceiptNo
    lngReceiptNo = recTemp!lngReceiptNo
    '--------------------------------------------------------------------
    Set recTemp = Nothing

    '删除作废单据无须判断
'    On Error GoTo DeleteErr
    gclsBase.BaseWorkSpace.BeginTrans
        
    '1)单据是作废单据,不执行c
    If Not blnIsVoid Then
        If ChangeAllItem_from_Activity("D", lngActivityID) = False Then GoTo DeleteErr
        If ChangeAllAccount_from_Activity("D", lngActivityID) = False Then GoTo DeleteErr
        If DeleteObtendTables() <> 1 Then GoTo DeleteErr
    End If
    
    '2)作废操作不执行
    If Not blnByVoid Then
        If DeleteItemActivityANDItemActivityDetail(lngActivityID) <> 0 Then GoTo DeleteErr
    Else
        If gclsBase.ExecSQL("UPDATE ItemActivity SET  ItemActivity.blnIsVoid = 1 WHERE (((ItemActivity.lngActivityID)=" & lngActivityID & "));") = False Then GoTo DeleteErr
    End If

⌨️ 快捷键说明

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