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

📄

📁 VB开发的ERP系统
💻
📖 第 1 页 / 共 5 页
字号:
            If Not Yesno = 1 Then
                GoTo Error_manage
            End If
            
        End If
    End If
    
    On Error GoTo Error_manage
    
    Cw_DataEnvi.DataConnect.BeginTrans
 
 '****************全月平均法
      
    '回填出库单
    SQLstr1 = Replace(AvgQuery_Cond, "view", "Chhs_Mate", 1, , vbTextCompare)
    SqlStr = "SELECT * FROM Chhs_Mate WHERE KjYear='" & PGKjYear & "' and Period='" & Now_period & "' and  " + SQLstr1
    Set Rectemp(0) = Cw_DataEnvi.DataConnect.Execute(SqlStr)
         
    Do While Not Rectemp(0).EOF
        
        '回填收发记录出库单
        SqlStr = "SELECT InOutMainId,InOutSubId,IssueMoney FROM Chhs_V_InOut WHERE Period='" & Now_period & "' AND KjYear='" & PGKjYear & "' " & _
                 " and WhCode='" & Trim(Rectemp(0).Fields("WhCode")) & "' " & _
                 " and MNumber='" & Trim(Rectemp(0).Fields("MNumber")) & "'" & _
                 " and (BillCode='1204' or BillCode='1205' or BillCode='1206') "
        Set Rectemp(1) = Cw_DataEnvi.DataConnect.Execute(SqlStr)
        
        Do While Not Rectemp(1).EOF
            
            If SFjezt Then      '处理实发金额自填
                If Rectemp(1).Fields("issuemoney") = 0 Then
                    If Rectemp(2).State = 1 Then Rectemp(2).Close
                    SqlStr = "SELECT Price,IssueMoney,FactIssueQuan from GY_InOutSub WHERE InOutMainId='" & Rectemp(1).Fields("InOutMainId") & "' AND InOutSubId='" & Rectemp(1).Fields("InOutSubId") & "'"
                    Rectemp(2).Open SqlStr, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockBatchOptimistic
                    If Not Rectemp(2).EOF Then
                        Rectemp(2).Fields("Price") = Format(Val(Rectemp(0).Fields("EndPrice")), "####.0" + String(Xtdjxsws, "0"))
                        Rectemp(2).Fields("IssueMoney") = Format(Val(Rectemp(2).Fields("FactIssueQuan")) * Val(Rectemp(0).Fields("EndPrice")), "####.0" + String(Xtjexsws, "0"))
                        Rectemp(2).UpdateBatch
                    End If
                    
                    '回填明细帐出库单
                    If Rectemp(3).State = 1 Then Rectemp(3).Close
                    SqlStr = "SELECT OutPrice,OutMoney FROM Chhs_List WHERE InOutMainId='" & Rectemp(1).Fields("InOutMainId") & "' AND InOutSubId='" & Rectemp(1).Fields("InOutSubId") & "'"
                    Rectemp(3).Open SqlStr, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockBatchOptimistic
                    If Not Rectemp(3).EOF Then
                        Rectemp(3).Fields("OutPrice") = Format(Val(Rectemp(0).Fields("EndPrice")), "####.0" + String(Xtdjxsws, "0"))
                        Rectemp(3).Fields("OutMoney") = Format(Val(Rectemp(2).Fields("FactIssueQuan")) * Val(Rectemp(0).Fields("EndPrice")), "####.0" + String(Xtjexsws, "0"))
                        Rectemp(3).UpdateBatch
                    End If
                End If
            Else
                If Rectemp(2).State = 1 Then Rectemp(2).Close
                SqlStr = "SELECT Price,IssueMoney,FactIssueQuan from GY_InOutSub WHERE InOutMainId='" & Rectemp(1).Fields("InOutMainId") & "' AND InOutSubId='" & Rectemp(1).Fields("InOutSubId") & "'"
                Rectemp(2).Open SqlStr, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockBatchOptimistic
                If Not Rectemp(2).EOF Then
                    Rectemp(2).Fields("Price") = Format(Val(Rectemp(0).Fields("EndPrice")), "####.0" + String(Xtdjxsws, "0"))
                    Rectemp(2).Fields("IssueMoney") = Format(Val(Rectemp(2).Fields("FactIssueQuan")) * Val(Rectemp(0).Fields("EndPrice")), "####.0" + String(Xtjexsws, "0"))
                    Rectemp(2).UpdateBatch
                End If
                
                '回填明细帐出库单
                If Rectemp(3).State = 1 Then Rectemp(3).Close
                SqlStr = "SELECT OutPrice,OutMoney FROM Chhs_List WHERE InOutMainId='" & Rectemp(1).Fields("InOutMainId") & "' AND InOutSubId='" & Rectemp(1).Fields("InOutSubId") & "'"
                Rectemp(3).Open SqlStr, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockBatchOptimistic
                If Not Rectemp(3).EOF Then
                    Rectemp(3).Fields("OutPrice") = Format(Val(Rectemp(0).Fields("EndPrice")), "####.0" + String(Xtdjxsws, "0"))
                    Rectemp(3).Fields("OutMoney") = Format(Val(Rectemp(2).Fields("FactIssueQuan")) * Val(Rectemp(0).Fields("EndPrice")), "####.0" + String(Xtjexsws, "0"))
                    Rectemp(3).UpdateBatch
                End If
            End If
            Rectemp(1).MoveNext
        Loop
        Rectemp(0).MoveNext
    Loop
         
    '***********修改期末处理月份
    SQLstr1 = Replace(Query_Cond, "view", "GY_WareHouse", 1, , vbTextCompare)
    SqlStr = "UPDATE GY_WareHouse SET EndDealFlagChhs=1 WHERE " + SQLstr1
    Cw_DataEnvi.DataConnect.Execute (SqlStr)

    '调整总帐
    Call Tzzz
    
    '向物料表中填写出库成本
    Call NewOutCost
     
    Cw_DataEnvi.DataConnect.CommitTrans
     
    '刷新列表框
    Call AddWarehouseName
     
    
     
    Tsxx = "期末处理完毕!"
    Call Xtxxts(Tsxx, 0, 4)
    
    Label1.Visible = False
    
    Set Rectemp(0) = Nothing
    Set Rectemp(1) = Nothing
    Set Rectemp(2) = Nothing
    Set Rectemp(3) = Nothing
    Set Rectemp(4) = Nothing
    Set Rectemp(5) = Nothing
    
    Exit Sub
 
  
Error_manage:

    Call ClearZG
    Call ClearPJDJ
    Call ClearCYJZ
    '调整总帐
    Call Tzzz
    Label1.Visible = False
    Tsxx = "期末处理失败,请稍候再试!"
    Call Xtxxts(Tsxx, 0, 1)
  
End Sub

Private Sub ClearZG()   '处理失败,删除已生成暂估单
    
    Dim Rectemp As New ADODB.Recordset
    Dim SqlStr As String
    Dim SQLstr1 As String
    Dim Now_period As Long           '当前月份
    
    Now_period = PGNowmon
    
    SQLstr1 = Replace(Query_Cond, "view", "Chhs_List", 1, , vbTextCompare)
    SqlStr = "DELETE Chhs_List WHERE KjYear='" & PGKjYear & "' AND Period='" & Now_period & "' AND (BillCode='1304' or BillCode='1306') AND  " + SQLstr1
    Cw_DataEnvi.DataConnect.Execute (SqlStr)
    If Now_period = LastMon Then
        SqlStr = "SELECT Period FROM GY_Kjrlb WHERE Kjyear=" & PGKjYear + 1 & " AND BeginFlag=1"
        Set Rectemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
        If Not Rectemp.EOF Then
            SqlStr = "DELETE Chhs_List WHERE KjYear='" & PGKjYear + 1 & "' AND Period='" & Rectemp.Fields("Period") & "' AND BillCode='1305'  AND  " + SQLstr1
            Cw_DataEnvi.DataConnect.Execute (SqlStr)
        End If
    Else
        SqlStr = "DELETE Chhs_List WHERE KjYear='" & PGKjYear & "' AND Period='" & Now_period + 1 & "' AND BillCode='1305'  AND  " + SQLstr1
        Cw_DataEnvi.DataConnect.Execute (SqlStr)
    End If
    
    Set Rectemp = Nothing
    
End Sub

Private Sub ClearPJDJ()                          '计算标记为真时,清除计算的全月平均单价

    Dim SqlStr As String
    Dim SQLstr1 As String
    Dim Now_period As Long           '当前月份
    
    Now_period = PGNowmon
    
    If Price_Flag Then
        SQLstr1 = Replace(AvgQuery_Cond, "view", "Chhs_Mate", 1, , vbTextCompare)
        SqlStr = "UPDATE Chhs_Mate SET EndPrice=0 WHERE KjYear='" & PGKjYear & "' AND Period ='" & Now_period & "' AND " + SQLstr1
        Cw_DataEnvi.DataConnect.Execute (SqlStr)
    End If

End Sub

Private Sub ClearCYJZ()
    
    Dim SqlStr As String
    Dim SQLstr1 As String
    Dim Now_period As Long           '当前月份
    
    Now_period = PGNowmon
    
    '清除差异结转单
    SQLstr1 = Replace(PlanQuery_Cond, "view", "Chhs_DiffBill", 1, , vbTextCompare)
    SqlStr = "DELETE Chhs_DiffBill WHERE KjYear='" & PGKjYear & "' and Period='" & Now_period & "' AND " + SQLstr1
    Cw_DataEnvi.DataConnect.Execute (SqlStr)
    
    '清除明细帐中的差异结转单
    SQLstr1 = Replace(PlanQuery_Cond, "view", "Chhs_List", 1, , vbTextCompare)
    SqlStr = "DELETE Chhs_List WHERE KjYear='" & PGKjYear & "' and Period='" & Now_period & "' and BillCode='1307' AND  " + SQLstr1
    Cw_DataEnvi.DataConnect.Execute (SqlStr)

End Sub

Private Function PdAvgprice() As Boolean     '全月平均单价判断
 
    Dim Rectemp As Recordset
    Dim Rec_Query As Recordset
    Dim Rec_Hz As New ADODB.Recordset
 
    Dim mMoney As Double          '金额
    Dim mQuan As Double           '数量
    Dim mOutQuan As Double        '出库数量
    Dim Avgprice As Double        '全月平均单价
 
    Dim SqlStr As String
    Dim SQLstr1 As String
    Dim Now_period As Long
 
    PdAvgprice = False
    
    Now_period = PGNowmon
    
    mQuan = 0
    mMoney = 0
    mOutQuan = 0
    
    Price_Flag = False
    
    '期初结存和本月收入的数量和金额
    If Rec_Hz.State = 1 Then Rec_Hz.Close
    SQLstr1 = Replace(AvgQuery_Cond, "view", "Chhs_Mate", , , vbTextCompare)
    
    If Not CallFlag Then
        Price_Flag = True
        SqlStr = "SELECT * FROM Chhs_Mate WHERE KjYear='" & PGKjYear & "' and Period ='" & Now_period & "' and EndPrice=0 and " + SQLstr1
    Else
        SqlStr = "SELECT * FROM Chhs_Mate WHERE KjYear='" & PGKjYear & "' and Period ='" & Now_period & "' and " + SQLstr1
    End If
    
    Rec_Hz.Open SqlStr, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockBatchOptimistic
    
    If Rec_Hz.EOF Then
        If Not CallFlag Then
            PdAvgprice = True
        End If
        Exit Function
    End If
    
    Jsqte = 0
    
    On Error GoTo LabelErr
    
    Cw_DataEnvi.DataConnect.BeginTrans
    
    Do While Not Rec_Hz.EOF
    
        RecCount = Rec_Hz.RecordCount
        Avgprice = 0
       
        mQuan = Val(Rec_Hz.Fields("StartQuan")) + Val(Rec_Hz.Fields("InQuan"))
        mMoney = Val(Rec_Hz.Fields("StartMoney")) + Val(Rec_Hz.Fields("InMoney")) - Val(Rec_Hz.Fields("OutMoney"))
        mOutQuan = Val(Rec_Hz.Fields("OutQuan"))
        
        If Not mOutQuan = 0 Then
        
            '平均单价计算是否包括本期暂估,不包括减掉
            If Not Xtclzg Then
                SqlStr = "SELECT InQuan,InMoney FROM Chhs_List WHERE WhCode='" & Trim(Rec_Hz.Fields("WhCode")) & "' " & _
                         " and MNumber='" & Trim(Rec_Hz.Fields("MNumber")) & "' " & _
                         " and KjYear='" & PGKjYear & "' and Period='" & Now_period & "' " & _
                         " and (BillCode='1304' or BillCode='1305'or BillCode='1306') AND StartFlag=0"
                Set Rec_Query = Cw_DataEnvi.DataConnect.Execute(SqlStr)
               
                Do While Not Rec_Query.EOF
                    mQuan = mQuan - (Val(Rec_Query.Fields("InQuan")))
                    mMoney = mMoney - Val(Rec_Query.Fields("InMoney"))
                    Rec_Query.MoveNext
                Loop
            End If
              
            '实发金额自填 数量、金额
            If SFjezt Then
                SqlStr = "SELECT OutQuan,OutMoney FROM Chhs_List WHERE WhCode='" & Trim(Rec_Hz.Fields("WhCode")) & "'" & _
                        " and MNumber='" & Trim(Rec_Hz.Fields("MNumber")) & "' and Period='" & Now_period & "'" & _
                        " and KjYear='" & PGKjYear & "' and  SfjeztFlag=1 "
                Set Rectemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
                
                Do While Not Rectemp.EOF
                    mQuan = mQuan - Val(Rectemp.Fields("OutQuan"))
                    Rectemp.MoveNext
                Loop
            End If
            
            '计算平均单价
            If mQuan <> 0 Then
                Avgprice = Format((mMoney) / (mQuan), "####." + String(Xtdjxsws, "0"))
                
                '期末处理时退出计算过程
                If Avgprice <= 0 And Not CallFlag Then
                    GoTo LabelErr
                    Exit Function
                End If
            Else
                
                '期末处理数量等于零时退出计算过程
                If Not CallFlag Then
                    GoTo LabelErr
                    Exit Function
                End If
              
            End If
             
            '回填单价
            Cw_DataEnvi.DataConnect.Execute ("Update Chhs_Mate set EndPrice='" & Avgprice & "' where MateId='" & Rec_Hz.Fields("MateId") & "'")
        Else
            Jsqte = Jsqte + 1
        End If
        Rec_Hz.MoveNext
           
    Loop
      
    Cw_DataEnvi.DataConnect.CommitTrans
    If Jsqte = RecCount Then
        Tsxx = "采用全月平均法核算的仓库本月无出库!"
    End If
    PdAvgprice = True
    Set Rectemp = Nothing
    Set Rec_Query = Nothing
    Set Rec_Hz = Nothing
    
    Exit Function
    
LabelErr:

    Cw_DataEnvi.DataConnect.RollbackTrans

⌨️ 快捷键说明

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