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

📄 clssales.cls

📁 金算盘软件代码
💻 CLS
📖 第 1 页 / 共 4 页
字号:
'    intResult = DeleteRelation(lngActivityID)
'    If intResult = 0 Then Exit Function
'    If intResult = -1 Then GoTo theErr
EndProc:
    BeforeDelete = 1
    If Not recTemp Is Nothing Then
        Set recTemp = Nothing
    End If
    Exit Function
TheErr:
    If Not recTemp Is Nothing Then
        Set recTemp = Nothing
    End If
    BeforeDelete = -1
End Function

'//////////////////////////////////////////////////////////////////////////////////////////
'
'                                           对照表处理
'
'//////////////////////////////////////////////////////////////////////////////////////////

'删除所有的对照表
Private Function DeleteObtendTables() As Integer
    Dim strSQL As String
    Dim intResult As Integer
    On Error GoTo TheErr
    '删除发票对照表
    If ClearInvoiceObtend() = False Then
        GoTo TheErr
    End If
    '1) 删除货位批次明细表
    If lngActivityTypeID = 11 Or lngActivityTypeID = 13 Or lngActivityTypeID = 15 Or lngActivityTypeID = 16 Or lngActivityTypeID = 19 Or lngActivityTypeID = 21 Or lngActivityTypeID = 22 Then
        '商品销售、委托出库、加工、分期、领用、盘亏、其他
        If ModifyPositionWhenDeleteOutBill(lngActivityID) = False Then GoTo TheErr
    End If
    '加工出库
    If lngActivityTypeID = 15 Then
        intResult = DeleteEntrustInToOut
        If intResult = 0 Then
            DeleteObtendTables = 0
            Exit Function
        End If
        If intResult = -1 Then GoTo TheErr
    End If
    '盘亏出库
    '如果明细可能来自《商品销售订单》
'    If lngActivityTypeID = 11 Or lngActivityTypeID = 13 Or lngActivityTypeID = 16 Then
'        '商品销售、委托出库、分期出库
'        If ChangeItemInfo() = -1 Then GoTo TheErr
'
'        '改变订单的数量, 清除关闭标志
  
    '删除成本明细表
    If DeleteItemCostDetail() = -1 Then GoTo TheErr
    If blnIsReceive Then
        If mblnIsCash Then
            If mdlAccount.DeleteCash(lngActivityID, thehWnd, lngActivityTypeID + 2, strSQL) = False Then
                mstrErrMsg = strSQL
                GoTo TheErr
            End If
        End If
        If blnDeleteCashToArap(lngActivityID, 2, False) = False Then
            GoTo TheErr
        End If

    End If
    If SetStockTakingPost() = False Then GoTo TheErr
    DeleteObtendTables = 1
    Exit Function
TheErr:
    DeleteObtendTables = -1
End Function


'算法:除《调拨》外,对照表的“出”操作为改一条,加一条。《调拨》的“出”操作为改一条加二条
'判断“入”操作是否对应有“出”操作的算法:如果“入”操作对应ID号只有一条记录,则表示无“出”

'货位商品批次明细表
Private Function DeletePositionItemDetail() As Integer
    Dim strSQL As String
'    Dim recTmp As rdoResultset
    
    On Error GoTo DeleteErr
    strSQL = "DELETE FROM PositionItemDetail WHERE PositionItemDetail.lngOutActivityDetailID IN " & _
        " (SELECT ItemActivityDetail.lngActivityDetailID FROM ItemActivityDetail " & _
        " WHERE ItemActivityDetail.lngActivityID=" & lngActivityID & ")"
    If gclsBase.ExecSQL(strSQL) = False Then GoTo DeleteErr
'    strSql = " SELECT PositionItemDetail.lngItemID,PositionItemDetail.lngPositionID,PositionItemDetail.lngInActivityDetailID," _
'           & " PositionItemDetail.lngOutActivityDetailID,PositionItemDetail.dblQuantity " _
'           & " FROM PositionItemDetail,ItemActivityDetail WHERE PositionItemDetail.lngOutActivityDetailID = ItemActivityDetail.lngActivityDetailID " _
'           & " AND (((ItemActivityDetail.lngActivityID)=" & lngActivityID & "))"
'    Set recTmp = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
'    Do While Not recTmp.EOF
'      strSql = "DELETE PositionItemDetail WHERE lngItemID=" & recTmp(0) & _
'         " AND lngPositionID=" & recTmp(1) & " AND lngInActivityDetailID=" & recTmp(2) & _
'         " AND lngOutActivityDetailID=" & recTmp(3) & " AND dblQuantity=" & recTmp(4)
'      If gclsBase.ExecSQL(strSql) = False Then
'         recTmp.Close
'         Set recTmp = Nothing
'         GoTo DeleteErr
'      End If
'      recTmp.MoveNext
'    Loop
'    recTmp.Close
'    Set recTmp = Nothing
    DeletePositionItemDetail = 1
    Exit Function
DeleteErr:
    DeletePositionItemDetail = -1
End Function



'加工入库与加工出库对照表(15 -- <5>)
'说明:先出库后入库(规则:有了入库的出库单不能删除)
Private Function DeleteEntrustInToOut() As Integer
    Dim strSQL As String
    Dim recTemp As rdoResultset
'    Dim recTmp As rdoResultset
    On Error GoTo TheErr
    
    DeleteEntrustInToOut = 0
    strSQL = "SELECT EntrustInToOut.lngOutActivityDetailID FROM EntrustInToOut,ItemActivityDetail WHERE EntrustInToOut.lngOutActivityDetailID = ItemActivityDetail.lngActivityDetailID" _
           & " AND (ItemActivityDetail.lngActivityID)=" & lngActivityID
    Set recTemp = gclsBase.BaseDB.OpenResultset(strSQL, rdOpenStatic)
    If Not recTemp.EOF Then
        Set recTemp = Nothing
        cMsgBox strBillNO & "加工出库单已有入库,不能" & strDelOrVoid
        Exit Function
    End If
    Set recTemp = Nothing
    
    strSQL = "DELETE FROM EntrustInToOut WHERE EntrustInToOut.lngOutActivityDetailID IN " & _
        " (SELECT ItemActivityDetail.lngActivityDetailID FROM ItemActivityDetail " & _
        " WHERE ItemActivityDetail.lngActivityID = " & lngActivityID & ")"
    If gclsBase.ExecSQL(strSQL) = False Then GoTo TheErr
'''    strSql = "SELECT EntrustInToOut.lngInActivityDetailID,EntrustInToOut.lngOutActivityDetailID," _
'''           & "EntrustInToOut.dblQuantity,EntrustInToOut.dblAmount " _
'''           & "FROM EntrustInToOut,ItemActivityDetail WHERE EntrustInToOut.lngOutActivityDetailID = ItemActivityDetail.lngActivityDetailID " _
'''           & " AND (((ItemActivityDetail.lngActivityID)=" & lngActivityID & "))"
'''    Set recTmp = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
'''    Do While Not recTmp.EOF
'''      strSql = "DELETE EntrustInToOut WHERE lngInActivityDetailID=" & recTmp(0) _
'''         & " AND lngOutActivityDetailID=" & recTmp(1) & " AND lngOutActivityDetailID=" & recTmp(2) & " AND dblAmount=" & recTmp(3)
'''      If gclsBase.ExecSQL(strSql) = False Then
'''         recTmp.Close
'''         Set recTmp = Nothing
'''         GoTo TheErr
'''      End If
'''      recTmp.MoveNext
'''    Loop
'''    recTmp.Close
'''    Set recTmp = Nothing
    DeleteEntrustInToOut = 1
    Exit Function
TheErr:
    If Not recTemp Is Nothing Then
        Set recTemp = Nothing
    End If
    DeleteEntrustInToOut = -1
End Function

'盘点表与盘赢/盘亏单对照表(21)
'如果是盘点表生成的盘亏单,则不能删除该盘亏单
Private Function DeleteStockTakingToReceipt() As Integer
    Dim strSQL As String
    Dim recTemp As rdoResultset
    Dim intCount As Integer
    On Error GoTo DeleteErr
    strSQL = " SELECT ItemActivityDetail.lngActivityDetailID FROM ItemActivityDetail " & _
                  " WHERE (ItemActivityDetail.lngActivityID)=" & lngActivityID & " AND ItemActivityDetail.lngOrderDetailID<>0 "
    Set recTemp = gclsBase.BaseDB.OpenResultset(strSQL, rdOpenStatic)
    
    If Not (recTemp.BOF And recTemp.EOF) Then
'        cMsgBox strBillNO & "盘亏单是由盘点表产生,不能删除、作废!"
        DeleteStockTakingToReceipt = 0
    Else
        DeleteStockTakingToReceipt = 1
    End If
    Set recTemp = Nothing
    Exit Function
DeleteErr:
    If Not recTemp Is Nothing Then
        Set recTemp = Nothing
    End If
    DeleteStockTakingToReceipt = -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 lngTempID As Long
    Dim dblTempPrice As Double
    Dim lngItemID As Long
    Dim dblQuantity As Double
    Dim dblCurrPrice_Temp As Double
    On Error GoTo TheErr
    
    strSQL = "SELECT ItemActivityDetail.lngActivityDetailID, ItemActivityDetail.lngItemID, ItemActivityDetail.dblQuantity, " _
           & " Item.lngRecentSaleReceiptDetailID, " _
           & " Item.lngMaxSalePriceReceiptDetailID, " _
           & " Item.lngMinSalePriceReceiptDetailID, " _
           & " Item.dblRecenetSalePrice, " _
           & " Item.dblMaxSalePrice, " _
           & " Item.dblMinSalePrice,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 & "单据中的商品,删除失败!"
        Set recTemp = Nothing
        Exit Function
    End If
    With recTemp
        .MoveFirst
        Do While Not .EOF
            lngActivityDetailID = .rdoColumns(0)
            lngItemID = .rdoColumns(1)
            dblQuantity = .rdoColumns(2)
            
            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)=11) 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 & " lngRecentSaleReceiptDetailID=0 , dblRecenetSalePrice=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

⌨️ 快捷键说明

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