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

📄 clspurchase.cls

📁 金算盘软件代码
💻 CLS
📖 第 1 页 / 共 5 页
字号:
            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
'            DeleteItemCostDetail = 1
    End Select
'    DeleteItemCostDetail = 1
End Function

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




'////////////////////////////////////////////////////////////////////////////////
'//
'//                                 删除列表记录
'//
'////////////////////////////////////////////////////////////////////////////////
'<接口>
'blnByVoid:删除功能由作废调用
Public Function DeletePurchase(arglngActivityID As Long, Optional blnByVoid As Boolean, Optional ByVal blnWriteOffBill As Boolean = False, Optional ByRef blnIsWriteOff As Boolean = False, Optional blnAlert As Boolean = True, Optional ByVal blnNoTrans As Boolean, Optional ByVal blnOtherBill As Boolean = False) 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
    '------------------------------------------
    If blnByVoid Then
        strDelOrVoid = "作废!"
    Else
        strDelOrVoid = "删除!"
    End If
    
    mblnOtherBill = blnOtherBill
    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.EOF Then
        cMsgBox "此单据已被删除!"
        Set recTemp = Nothing
        Exit Function
    End If
    lngActivityTypeID = recTemp(0)
    If lngActivityTypeID = 1 Then
        If blnOtherBill = False Then
            mlngInvoiceActivityID = recTemp!lngInvoiceActivityID
        End If
    End If
    strBillNO = ID2String(lngActivityTypeID + 1, lngActivityID) & "号"
    blnIsVoid = (recTemp(1) <> 0)
    blnIsPrinted = (recTemp!blnIsPrinted <> 0)
    mblnIsCash = (recTemp!blnIsCash <> 0)
    #If conVersionType = 16 Then
        '财务版
        strTypeName = "采购发票"
    #Else
        strTypeName = recTemp(2)
    #End If
    '-------------------------------------------------------------------
    intYear = gclsBase.FYearOfDate(C2Date(recTemp!strDate))
    bytPeriod = gclsBase.PeriodOfDate(C2Date(recTemp!strDate))
    lngReceiptTypeID = recTemp!lngReceiptTypeID
    strReceiptNo = LTrim(recTemp!strReceiptNo)
    lngReceiptNo = recTemp!lngReceiptNo
    blnIsInvoice = (recTemp!blnIsInvoice <> 0) Or (recTemp!lngReceiptTypeID = 8)
    '--------------------------------------------------------------------
    Set recTemp = Nothing
    
   blnNoAlert = False
    If blnAlert Then
        If BeforeDelete(blnByVoid, , , , blnWriteOffBill) <> 1 Then Exit Function  '判断单据能否删除
    End If
    
    If mblnOtherBill = False Then
        If blnNoAlert = False Then
          If Not blnWriteOffBill Then
              If Not blnByVoid And blnAlert Then ' 非作废操作调用无须删除提问
                  If blnIsVoid = False Then
                      If ShowMsg(thehWnd, "您确实要删除" & strBillNO & strTypeName & "单据吗?", MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2 + MB_SYSTEMMODAL, "提示信息") <> IDYES Then Exit Function
                  Else
                      If ShowMsg(thehWnd, "您确实要删除" & strBillNO & "已经作废的" & strTypeName & "单据吗?", MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2 + MB_SYSTEMMODAL, "提示信息") <> IDYES Then Exit Function
                  End If
              End If
          End If
        End If
   End If
'    If blnAlert Then
'        If BeforeDelete(blnByVoid, , , , blnWriteOffBill) <> 1 Then Exit Function  '判断单据能否删除
'    End If
    
'    gclsSys.SendMessage thehWnd, 31 + lngActivityTypeID
'    DeletePurchase = True
'    Exit Function
    
    Dim i As Long
    If Not blnNoTrans Then
        gclsBase.BaseWorkSpace.BeginTrans
    End If
    If Not blnWriteOffBill And Not blnIsVoid Then
'        gclsBase.BaseWorkSpace.BeginTrans
        For i = LBound(lngWriteOffID) To UBound(lngWriteOffID)
            If lngWriteOffID(i) <> 0 Then
                Dim clsTmp As clsPurchase
                Set clsTmp = New clsPurchase
                clsTmp.SethWnd thehWnd
                If clsTmp.DeletePurchase(lngWriteOffID(i), False, True, , , True) = False Then
                    If Not blnNoTrans Then
                        gclsBase.BaseWorkSpace.RollBacktrans
                    End If
'                    gclsBase.BaseWorkSpace.rollbacktrans
                    blnIsWriteOff = False
                    DeletePurchase = False
                    Set clsTmp = Nothing
                    Exit Function
                End If
                Set clsTmp = Nothing
                blnIsWriteOff = True
            End If
        Next
'        gclsBase.BaseWorkSpace.CommitTrans
    End If
'    On Error GoTo DeleteErr
        
    '1)单据是作废单据,不执行c
    If Not blnIsVoid Then
        If DeleteRelation(lngActivityID, lngActivityTypeID, thehWnd) <> 1 Then GoTo DeleteErr   '删除关系(删除采购发票与受托结算单时须标记对应商品入库单及受托入库单)
        If ChangeAllItem_from_Activity("D", lngActivityID) = False Then GoTo DeleteErr
        If ChangeAllAccount_from_Activity("D", lngActivityID) = False Then GoTo DeleteErr
        If ModifyItemTable(lngActivityID, False) = False Then GoTo DeleteErr   '维护商品表(再定量、再销量、价格)
        If DeleteObtendTables(blnWriteOffBill) <> 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 blnIsVoid = 1," & _
            " blnIsCash = 0 WHERE lngActivityID=" & lngActivityID) = False Then GoTo DeleteErr
    End If
    
'------------------------------------------------------------------------------
    If Not blnByVoid Then blnMaxNODecrease intYear, bytPeriod, lngReceiptTypeID, strReceiptNo, lngReceiptNo
'------------------------------------------------------------------------------
    If Not blnNoTrans Then
        gclsBase.BaseWorkSpace.CommitTrans
    End If
    DeletePurchase = True
    gclsSys.SendMessage 0, 31 + lngActivityTypeID
    If Not recTemp Is Nothing Then
        Set recTemp = Nothing
    End If
    Exit Function
DeleteErr:
   On Error Resume Next
   If Not blnNoTrans Then
        gclsBase.BaseWorkSpace.RollBacktrans
    End If
    If Not recTemp Is Nothing Then
        Set recTemp = Nothing
    End If
    
    blnIsWriteOff = False
    Screen.MousePointer = vbDefault
    If mstrErrMsg = "" Then
        cMsgBox Left(strDelOrVoid, 2) & strTypeName & "单据失败!"
    Else
        cMsgBox mstrErrMsg
    End If
End Function

Private Sub Class_Terminate()
    Erase lngWriteOffID
End Sub

Private Function SetStockTakingPost() As Boolean
    Dim strSQL As String
    Dim recTmp As rdoResultset
    Dim lngStockTakingID As Long
    
    On Error GoTo ErrHandle
    
    If lngActivityTypeID <> 9 And lngActivityTypeID <> 21 Then
        GoTo EndProc
        
    End If
    strSQL = "SELECT lngOrderDetailID FROM ItemActivityDetail,ItemActivity WHERE " _
        & "ItemActivityDetail.lngActivityID=ItemActivity.lngActivityID " _
        & "AND ItemActivity.blnIsVoid=0 AND ItemActivity.lngActivityTypeID IN(9,21) AND lngOrderDetailID <> 0 And " _
        & "ItemActivity.lngActivityID=" & lngActivityID
    Set recTmp = gclsBase.BaseDB.OpenResultset(strSQL, rdOpenForwardOnly)
    If recTmp.BOF And recTmp.EOF Then
        GoTo EndProc
    End If
    lngStockTakingID = recTmp(0)
    recTmp.Close
    Set recTmp = Nothing
    strSQL = "SELECT lngOrderDetailID FROM ItemActivityDetail,ItemActivity WHERE " _
        & "ItemActivityDetail.lngActivityID=ItemActivity.lngActivityID " _
        & "AND ItemActivity.blnIsVoid=0 AND ItemActivity.lngActivityTypeID IN(9,21) AND lngOrderDetailID=" & lngStockTakingID & "  And " _
        & "ItemActivity.lngActivityID<>" & lngActivityID
    Set recTmp = gclsBase.BaseDB.OpenResultset(strSQL, rdOpenForwardOnly)
    If recTmp.BOF And recTmp.EOF Then
        strSQL = "UPDATE StockTaking set blnIsPost=0 WHERE lngStockTakingID=" & lngStockTakingID
        If gclsBase.ExecSQL(strSQL) = False Then
            GoTo ErrHandle
        End If
    Else
        GoTo EndProc
    End If
    
EndProc:
    SetStockTakingPost = True
    If Not recTmp Is Nothing Then
        recTmp.Close
        Set recTmp = Nothing
    End If
    Exit Function
ErrHandle:
    SetStockTakingPost = False
    If Not recTmp Is Nothing Then
        recTmp.Close
        Set recTmp = Nothing
    End If
    Exit Function
End Function

Private Function ClearInvoiceObtend(ByVal blnWriteOffBill As Boolean) As Boolean
    Dim strSQL As String
    
    Select Case lngActivityTypeID
    Case 1, 2, 4, 6
        strSQL = "UPDATE ItemActivityDetail SET ItemActivityDetail.dblInvoiceQuantity=" & _
            " (SELECT ItemActivityDetail.dblInvoiceQuantity-NVL(Sum(PurchaseToInvoice.dblQuantity),0) " & _
            " FROM PurchaseToInvoice,ItemActivityDetail ItemActivityDetail_1 " & _
            " Where PurchaseToInvoice.lngInvoiceDetailID = ItemActivityDetail.lngActivityDetailID " & _
            " AND PurchaseToInvoice.lngReceiptDetailID = ItemActivityDetail_1.lngActivityDetailID " & _
            " AND ItemActivityDetail_1.lngActivityID = " & lngActivityID & "), " & _
            " ItemActivityDetail.dblCurrInvoiceAmount=" & _
            "(SELECT ItemActivityDetail.dblCurrInvoiceAmount-NVL(Sum(PurchaseToInvoice.dblCurrAmount),0) FROM PurchaseToInvoice,ItemActivityDetail ItemActivityDetail_1 " & _
            " Where PurchaseToInvoice.lngInvoiceDetailID = ItemActivityDetail.lngActivityDetailID " & _
            " AND PurchaseToInvoice.lngReceiptDetailID = ItemActivityDetail_1.lngActivityDetailID " & _
            " AND ItemActivityDetail_1.lngActivityID = " & lngActivityID & ") " & _
            " WHERE EXISTS (SELECT ItemActivityDetail_1.lngActivityID FROM PurchaseToInvoice,ItemActivityDetail ItemActivityDetail_1 " & _
            " WHERE PurchaseToInvoice.lngInvoiceDetailID = ItemActivityDetail.lngActivityDetailID " & _
         

⌨️ 快捷键说明

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