批量核销

7 篇文章 0 订阅


Public Function MainFunction(ByVal sKey As String, oList As Object, ByRef bCancel As Boolean)
 Dim frmX As New frmVerification
 Dim vec As New KFO.Vector
 Dim RsYear As ADODB.Recordset '当前年份
 Dim RsPeriod As ADODB.Recordset '当前期间
 Dim Rs       As ADODB.Recordset
 Dim strYear As String
 Dim strPeriod As String
 Dim strSQL  As String
 Dim strIDlist As String
 Dim oBillData            As Object '中间层组件
 Dim I As Integer, J As Integer, K As Integer
 On Error GoTo err_handle:
 
   Set oBillData = CreateObject("BIllDataAccess.GetData")
   strSQL = "SELECT FValue FROM t_systemprofile WHERE FCateGory='IC' AND FKEY='CurrentYear'"
  Set RsYear = oBillData.ExecuteSQL(MMTS.PropsString, strSQL)
   If RsYear.EOF Then
      MsgBox "当前年份未获取到,无法核销", vbOKOnly, "xxxx"
      Exit Function
   Else
      strYear = RsYear.Fields("FValue")
   End If

   strSQL = "SELECT FValue FROM t_systemprofile WHERE FCateGory='IC' AND FKEY='CurrentPeriod'"
  Set RsPeriod = oBillData.ExecuteSQL(MMTS.PropsString, strSQL)
   If RsPeriod.EOF Then
      MsgBox "当前期间未获取到,无法核销", vbOKOnly, "xxxx"
      Exit Function
   Else
      strPeriod = Right("00" & RsPeriod.Fields("FValue"), 2)
   End If
  
   oList.MultiSelect = 1
   Set vec = oList.ListSelectBillInfo
   If vec.Size = 0 Then
      Exit Function
   Else
      If vec(1)("ftrantype") <> 5 Then
         MsgBox "该功能只能在委外入库序时薄中使用", vbOKOnly, "xxxx"
         Exit Function
      End If
   End If
   For I = 1 To vec.Size
      
       If strIDlist = "" Then
          strIDlist = " (b.finterid=" & vec(I)("finterid") & " and b.fentryid=" & vec(I)("fentryid") & " )"
       Else
          strIDlist = strIDlist & " or  (b.finterid=" & vec(I)("finterid") & " and b.fentryid=" & vec(I)("fentryid") & " )"
       End If
   Next I
   If strIDlist = "" Then
      MsgBox "未选中单据", vbOKOnly, "xxxx"
      Exit Function
   End If
   strSQL = "select CONVERT(varchar(7),fdate,120) fyp, a.FDate,case a.FPurposeID when 14190 then '普通订单' when  14191 then '返修订单' end FPurposeID,isnull(a.FCheckerID,0)   FCheckerID,isnull(c.FName,'') fsupplyname,a.FBillNo ,isnull(d.FName,'') fstockname " _
   & " ,e.FNumber ,e.FName ,e.FModel ,f.FName funitname,FAuxQtyMust,Fauxqty,b.FOrderBillNo,b.FBatchNo ,b.FInterID ,b.FEntryID ,b.FCheckStatus ,b.FOrderInterID ,b.FOrderEntryID,isnull(b.FSecQty,0) FSecQty " _
   & " from ICStockBill a inner join ICStockBillEntry b on a.FInterID =b.FInterID " _
   & " left join t_Supplier c on a.FSupplyID =c.FItemID " _
   & " left join t_Stock d on b.FDCStockID =d.FItemID " _
   & " left join t_ICItem e on b.FItemID =e.FItemID " _
   & " left join t_MeasureUnit f on b.FUnitID=f.FMeasureUnitID " _
   & " Where a.FTranType = 5 And (" & strIDlist & ")"
   Set Rs = oBillData.ExecuteSQL(MMTS.PropsString, strSQL)
   '合法性检测
   '1.是否存在未审核单据
   Rs.Filter = " fcheckerid=0 "
   If Not Rs.EOF Then
      MsgBox "存在未审核单据,请检查(" & Rs.Fields("FBillNo") & ")", vbOKOnly, "xxxx"
      Exit Function
   End If
   '2.是否存在已核销单据
   Rs.Filter = " FCheckStatus<>0 "
    If Not Rs.EOF Then
      MsgBox "存在已核销单据,请检查(" & Rs.Fields("FBillNo") & ")", vbOKOnly, "xxxx"
      Exit Function
   End If
   '3.是否存在不是当前期间的单据
   Rs.Filter = " fyp <>'" & strYear & "-" & strPeriod & "'"
    If Not Rs.EOF Then
      MsgBox "存在非当前期间单据,请检查(" & Rs.Fields("FBillNo") & ")", vbOKOnly, "xxxx"
      Exit Function
   End If
   Set Module1.tmpRs = Rs.Clone()
   frmX.Show vbModal
   Set frmX = Nothing
   Set RsYear = Nothing
   Set RsPeriod = Nothing
   Set Rs = Nothing
  
 Exit Function
err_handle:
 MsgBox Err.Description & vbCrLf & "", vbOKOnly, "xxxx"
End Function

----

Dim blnBusy As Boolean
'qk 20160405
'委外入库表头初始化
Private Sub initInBill()
With sprInBill
   .MaxRows = 1: .MaxCols = 19
   .Row = SpreadHeader:
   .Col = 1: .CellType = CellTypeEdit: .Text = "选择": .BackColor = &H8000000F: .ColWidth(1) = 0
   .Col = 2: .CellType = CellTypeEdit: .Text = "日期": .BackColor = &H8000000F: .ColWidth(2) = 8
   .Col = 3: .CellType = CellTypeEdit: .Text = "加工单位": .BackColor = &H8000000F: .ColWidth(3) = 15.125
   .Col = 4: .CellType = CellTypeEdit: .Text = "单据编号": .BackColor = &H8000000F: .ColWidth(4) = 11.625
   .Col = 5: .CellType = CellTypeEdit: .Text = "委外类型": .BackColor = &H8000000F: .ColWidth(5) = 8
   .Col = 6: .CellType = CellTypeEdit: .Text = "收料仓库": .BackColor = &H8000000F: .ColWidth(6) = 8
   .Col = 7: .CellType = CellTypeEdit: .Text = "材料代码": .BackColor = &H8000000F: .ColWidth(7) = 8
   .Col = 8: .CellType = CellTypeEdit: .Text = "材料名称": .BackColor = &H8000000F: .ColWidth(8) = 16.875
   .Col = 9: .CellType = CellTypeEdit: .Text = "规格型号": .BackColor = &H8000000F: .ColWidth(9) = 8
   .Col = 10: .CellType = CellTypeEdit: .Text = "单位": .BackColor = &H8000000F: .ColWidth(10) = 4.125
   .Col = 11: .CellType = CellTypeEdit: .Text = "应收数量": .BackColor = &HFFFF80: .ColWidth(11) = 10.5
   .Col = 12: .CellType = CellTypeEdit: .Text = "实收数量": .BackColor = &HFFFF80: .ColWidth(12) = 10.5
   .Col = 13: .CellType = CellTypeEdit: .Text = "辅助数量": .BackColor = &HFFFF80: .ColWidth(13) = 10.5
   .Col = 14: .CellType = CellTypeEdit: .Text = "订单单号": .BackColor = &H8000000F: .ColWidth(14) = 19.375
   .Col = 15: .CellType = CellTypeEdit: .Text = "批号": .BackColor = &H8000000F: .ColWidth(15) = 17
   .Col = 16: .CellType = CellTypeEdit: .Text = "FInterid": .BackColor = &H8000000F: .ColWidth(16) = 8
   .Col = 17: .CellType = CellTypeEdit: .Text = "FEntryid": .BackColor = &H8000000F: .ColWidth(17) = 8
   .Col = 18: .CellType = CellTypeEdit: .Text = "FOrderInterID": .BackColor = &H8000000F: .ColWidth(18) = 8
   .Col = 19: .CellType = CellTypeEdit: .Text = "FOrderEntryID": .BackColor = &H8000000F: .ColWidth(19) = 8
  
End With

End Sub

'qk 20160406
'委外出库表头初始化
Private Sub initOutBill()
With sprOutBill
   .MaxRows = 0: .MaxCols = 25
   .Row = SpreadHeader:
    .Col = 1: .CellType = CellTypeEdit: .Text = "选择": .BackColor = &H8000000F: .ColWidth(1) = 0
    .Col = 2: .CellType = CellTypeEdit: .Text = "日期": .BackColor = &H8000000F: .ColWidth(2) = 8
    .Col = 3: .CellType = CellTypeEdit: .Text = "加工单位": .BackColor = &H8000000F: .ColWidth(3) = 13.5
    .Col = 4: .CellType = CellTypeEdit: .Text = "单据编号": .BackColor = &H8000000F: .ColWidth(4) = 11.375
    .Col = 5: .CellType = CellTypeEdit: .Text = "委外类型": .BackColor = &H8000000F: .ColWidth(5) = 7.25
    .Col = 6: .CellType = CellTypeEdit: .Text = "材料代码": .BackColor = &H8000000F: .ColWidth(6) = 8
    .Col = 7: .CellType = CellTypeEdit: .Text = "材料名称": .BackColor = &H8000000F: .ColWidth(7) = 10.875
    .Col = 8: .CellType = CellTypeEdit: .Text = "规格型号": .BackColor = &H8000000F: .ColWidth(8) = 8
    .Col = 9: .CellType = CellTypeEdit: .Text = "单位": .BackColor = &H8000000F: .ColWidth(9) = 4.5
    .Col = 10: .CellType = CellTypeEdit: .Text = "批号": .BackColor = &H8000000F: .ColWidth(10) = 8
    .Col = 11: .CellType = CellTypeEdit: .Text = "数量": .BackColor = &H8000000F: .ColWidth(11) = 7.5
    .Col = 12: .CellType = CellTypeEdit: .Text = "未核销数量": .BackColor = &H8000000F: .ColWidth(12) = 8.875
    .Col = 13: .CellType = CellTypeEdit: .Text = "本次核销数量": .BackColor = &HFFFF80: .ColWidth(13) = 9
    .Col = 14: .CellType = CellTypeEdit: .Text = "未核销金额": .BackColor = &H8000000F: .ColWidth(14) = 8.875
    .Col = 15: .CellType = CellTypeEdit: .Text = "本次核销金额": .BackColor = &H8000000F: .ColWidth(15) = 8
    .Col = 16: .CellType = CellTypeEdit: .Text = "基本单位成本": .BackColor = &H8000000F: .ColWidth(16) = 8
    .Col = 17: .CellType = CellTypeEdit: .Text = "单位成本": .BackColor = &H8000000F: .ColWidth(17) = 7.625
    .Col = 18: .CellType = CellTypeEdit: .Text = "订单单号": .BackColor = &H8000000F: .ColWidth(18) = 15.125
    .Col = 19: .CellType = CellTypeEdit: .Text = "核销标志": .BackColor = &H8000000F: .ColWidth(19) = 8
    .Col = 20: .CellType = CellTypeEdit: .Text = "FInterid": .BackColor = &H8000000F: .ColWidth(20) = 8
    .Col = 21: .CellType = CellTypeEdit: .Text = "FEntryid": .BackColor = &H8000000F: .ColWidth(21) = 8
    .Col = 22: .CellType = CellTypeEdit: .Text = "FOrderInterID": .BackColor = &H8000000F: .ColWidth(22) = 8
    .Col = 23: .CellType = CellTypeEdit: .Text = "FOrderEntryID": .BackColor = &H8000000F: .ColWidth(23) = 8
    .Col = 24: .CellType = CellTypeEdit: .Text = "fleftqty": .BackColor = &H8000000F: .ColWidth(23) = 8 '保留未核销数量,便于计算
    .Col = 25: .CellType = CellTypeEdit: .Text = "fleftamount": .BackColor = &H8000000F: .ColWidth(23) = 8 '保留未核销金额,便于计算
End With
End Sub

Private Sub Command1_Click()
If Not blnBusy Then
   Verification
Else
   MsgBox "核销进行中,请稍等...", vbOKOnly, "xxxx"
End If
End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 32 Then '空格核销
   If Not blnBusy Then
   Verification
Else
   MsgBox "核销进行中,请稍等...", vbOKOnly, "xxxx"
End If
End If
End Sub
'qk 20160407 核销
Private Sub Verification()
Dim dblFDInterID As Double
Dim dblFDEntryID As Double
Dim dblFSInterID As Double
Dim dblFSEntryID As Double
Dim dblFQty      As Double
Dim dblFAmount   As Double
Dim dblFLeftQty  As Double
Dim strUserName  As String
Dim lngFUserID   As Long
Dim strDate      As String
Dim strSQL       As String
Dim Rs           As ADODB.Recordset
Dim oBillData            As Object '中间层组件
Dim I As Integer, J As Integer, K As Integer
On Error GoTo err_handle:
If sprInBill.MaxRows <= 0 Then Exit Sub
If sprOutBill.MaxRows <= 0 Then Exit Sub
blnBusy = True
 Set oBillData = CreateObject("BIllDataAccess.GetData")
 
  
'取用户ID
strUserName = MMTS.UserName()
strSQL = " select fuserid from t_User where fname='" & strUserName & "'"
Set Rs = oBillData.ExecuteSQL(MMTS.PropsString, strSQL)
lngFUserID = Rs.Fields("fuserid")
'取入库信息
sprInBill.Col = 2: strDate = Format(sprInBill.Text, "yyyy-mm-dd")
sprInBill.Col = 16: dblFDInterID = sprInBill.Text
sprInBill.Col = 17: dblFDEntryID = sprInBill.Text
 
 
'取出库信息
strSQL = ""

For I = 1 To sprOutBill.MaxRows
    sprOutBill.Row = I
    sprOutBill.Col = 12: dblFLeftQty = sprOutBill.Text
    sprOutBill.Col = 13: dblFQty = sprOutBill.Text
    sprOutBill.Col = 15: dblFAmount = sprOutBill.Text
    sprOutBill.Col = 20: dblFSInterID = sprOutBill.Text
    sprOutBill.Col = 21: dblFSEntryID = sprOutBill.Text
    If dblFLeftQty < 0 Then
       MsgBox "未核销数量为负,请检查", vbOKOnly, "xxxx"
       blnBusy = False
       Exit Sub
    End If
    If dblFQty > 0 Then
        If strSQL = "" Then
           strSQL = dblFDInterID & "," & dblFDEntryID & "," & dblFSInterID & "," & dblFSEntryID & "," & dblFQty & "," & dblFAmount & ",''" & strDate & "''," & lngFUserID
        Else
           strSQL = strSQL & "|" & dblFDInterID & "," & dblFDEntryID & "," & dblFSInterID & "," & dblFSEntryID & "," & dblFQty & "," & dblFAmount & ",''" & strDate & "''," & lngFUserID
        End If
    End If
Next I
strSQL = "exec qk_Verification '" & strSQL & "'"
Set Rs = oBillData.ExecuteSQL(MMTS.PropsString, strSQL)
If Not Rs.EOF Then
   If Rs.Fields("fflag") = -1 Then
      MsgBox "核销出现异常:" & Rs.Fields("fmsg"), vbOKOnly, "xxxx"
      Exit Sub
   End If
Else
   MsgBox "核销出现异常,未返回查询数据", vbOKOnly, "xxxx"
   Exit Sub
End If
'核销完后,删除当前行,并删除出库单
    If sprInBill.MaxRows > 0 Then
      sprInBill.DeleteRows sprInBill.Row, 1
      sprInBill.MaxRows = sprInBill.MaxRows - 1
      sprInBill.Refresh
      sprOutBill.MaxRows = 0
      If sprInBill.MaxRows > 0 Then
            sprOutBill.SetFocus
            sprInBill_Click 1, 1
            sprOutBill.SetActiveCell 1, 13
      End If
    End If
    blnBusy = False
Exit Sub
err_handle:
blnBusy = False
MsgBox Err.Description & vbCrLf & "", vbOKOnly, "xxxx"
End Sub
Private Sub Form_Load()
Screen.MousePointer = 1
initInBill
initOutBill
LoadInBill
sprInBill_Click 1, 1 '加载完入库信息后,默认选中第一行
blnBusy = False
End Sub
'qk 20160406 显示入库单信息
Private Sub LoadInBill()
Dim I  As Integer
On Error GoTo err_handle:
I = 1
Do While Not Module1.tmpRs.EOF
  With sprInBill
     .MaxRows = I: .Row = I
     .Col = 2: .Text = Format(Module1.tmpRs.Fields("FDate"), "yyyy-mm-dd"): .Lock = True
     .Col = 3: .Text = Module1.tmpRs.Fields("fsupplyname"): .Lock = True
     .Col = 4: .Text = Module1.tmpRs.Fields("FBillNo"): .Lock = True
     .Col = 5: .Text = Module1.tmpRs.Fields("FPurposeID"): .Lock = True
     .Col = 6: .Text = Module1.tmpRs.Fields("fstockname"): .Lock = True
     .Col = 7: .Text = Module1.tmpRs.Fields("FNumber"): .Lock = True
     .Col = 8: .Text = Module1.tmpRs.Fields("FName"): .Lock = True
     .Col = 9: .Text = Module1.tmpRs.Fields("FModel"): .Lock = True
     .Col = 10: .Text = Module1.tmpRs.Fields("funitname"): .Lock = True
     .Col = 11: .Text = Module1.tmpRs.Fields("FAuxQtyMust"): .Lock = True: .TypeHAlign = TypeHAlignRight:
     .Col = 12: .Text = Module1.tmpRs.Fields("Fauxqty"): .Lock = True: .TypeHAlign = TypeHAlignRight:
     .Col = 13: .Text = Module1.tmpRs.Fields("FSecQty"): .Lock = True: .TypeHAlign = TypeHAlignRight:
     .Col = 14: .Text = Module1.tmpRs.Fields("FOrderBillNo"): .Lock = True:
     .Col = 15: .Text = Module1.tmpRs.Fields("FBatchNo"): .Lock = True:
     .Col = 16: .Text = Module1.tmpRs.Fields("FInterID"): .Lock = True:
     .Col = 17: .Text = Module1.tmpRs.Fields("FEntryID"): .Lock = True:
     .Col = 18: .Text = Module1.tmpRs.Fields("FOrderInterID"): .Lock = True:
     .Col = 19: .Text = Module1.tmpRs.Fields("FOrderEntryID"): .Lock = True:
    
  End With
  I = I + 1
  Module1.tmpRs.MoveNext
Loop
Exit Sub
err_handle:
MsgBox Err.Description & vbCrLf & "LoadInBill", vbOKOnly, "xxxx"
End Sub

Private Sub Option1_Click() '按应收
Dim introw As Integer
Dim intcol As Integer
If sprInBill.MaxRows <= 0 Then Exit Sub
introw = sprInBill.Row
intcol = sprInBill.Col
sprInBill_Click intcol, introw
End Sub

Private Sub Option2_Click()
Dim introw As Integer
Dim intcol As Integer
If sprInBill.MaxRows <= 0 Then Exit Sub
introw = sprInBill.Row
intcol = sprInBill.Col
sprInBill_Click intcol, introw
End Sub

Private Sub Option3_Click()
Dim introw As Integer
Dim intcol As Integer
If sprInBill.MaxRows <= 0 Then Exit Sub
introw = sprInBill.Row
intcol = sprInBill.Col
sprInBill_Click intcol, introw
End Sub

Private Sub sprInBill_Click(ByVal Col As Long, ByVal Row As Long)
Dim lngFOrderInterID As Long
Dim lngFOrderEntryID As Long
Dim dblQty  As Double '应收
Dim dblRealQty  As Double '实收
If Row < 1 Then
   Exit Sub
End If
sprInBill.SetSelection 1, Row, 18, Row
sprInBill.Row = Row:
sprInBill.Col = 18
lngFOrderInterID = sprInBill.Text
sprInBill.Col = 19
lngFOrderEntryID = sprInBill.Text
sprInBill.Col = 11
dblQty = sprInBill.Text
sprInBill.Col = 12
dblRealQty = sprInBill.Text
Screen.MousePointer = 11
LoadOutBill lngFOrderInterID, lngFOrderEntryID, dblQty, dblRealQty
Screen.MousePointer = 1
End Sub
Private Sub LoadOutBill(lngFOrderInterID As Long, lngFOrderEntryID As Long, dblQty As Double, dblRealQty As Double)
Dim Rs  As ADODB.Recordset
Dim strSQL  As String
Dim oBillData            As Object '中间层组件
Dim intType As Integer '数量自动填充类型
Dim I  As Integer
On Error GoTo err_handle:
    sprOutBill.MaxRows = 0
    If Option1.Value Then intType = 1 '按应收
    If Option2.Value Then intType = 2 '按实收
    If Option3.Value Then intType = 3 '按未核销
   
    Set oBillData = CreateObject("BIllDataAccess.GetData")
    strSQL = "exec qk_getVerOutBill " & lngFOrderInterID & "," & lngFOrderEntryID
    Set Rs = oBillData.ExecuteSQL(MMTS.PropsString, strSQL)
    If Rs.EOF Then
       MsgBox "未查到对应的委外出库单,可能的原因有:1已被其他入库单核销 ;2未审核;3未发料。请检查", vbOKOnly, "xxxx"
       sprInBill.DeleteRows sprInBill.Row, 1 '删除这一行
       sprInBill.MaxRows = sprInBill.MaxRows - 1
       Exit Sub
    End If
I = 1
Do While Not Rs.EOF
With sprOutBill
     .MaxRows = I: .Row = I
     .Col = 2: .Text = Format(Rs.Fields("fdate"), "yyyy-mm-dd"): .Lock = True
     .Col = 3: .Text = Rs.Fields("FSupplyIDName"): .Lock = True
     .Col = 4: .Text = Rs.Fields("FBillNo"): .Lock = True
     .Col = 5: .Text = Rs.Fields("FPurposeID"): .Lock = True
     .Col = 6: .Text = Rs.Fields("ffullnumber"): .Lock = True
     .Col = 7: .Text = Rs.Fields("fitemname"): .Lock = True
     .Col = 8: .Text = Rs.Fields("fitemmodel"): .Lock = True
     .Col = 9: .Text = Rs.Fields("funitidname"): .Lock = True
     .Col = 10: .Text = Rs.Fields("fbatchno"): .Lock = True
     .Col = 11: .Text = Rs.Fields("Fauxqty"): .Lock = True: .TypeHAlign = TypeHAlignRight
     .Col = 12:  .Lock = True: .TypeHAlign = TypeHAlignRight '未核销数量
     If intType = 1 Then '应收
       .Text = Rs.Fields("FPreQty") - dblQty:
     ElseIf intType = 2 Then '实收
        .Text = Rs.Fields("FPreQty") - dblRealQty:
     ElseIf intType = 3 Then '未核销
        .Text = 0:
     End If
     If CDbl(.Text) < 0 Then
        MsgBox "未核销数量不正常,请注意手工调整", vbOKOnly, "xxxx"
     End If
     .Col = 13: .TypeHAlign = TypeHAlignRight '本次核销数量
     If intType = 1 Then '应收
        .Text = dblQty:::   '本次核销数量
     ElseIf intType = 2 Then '实收
       .Text = dblRealQty
     ElseIf intType = 3 Then '未核销
       .Text = Rs.Fields("FPreQty")
     End If
    
     .Col = 14:: .Lock = True: .TypeHAlign = TypeHAlignRight '未核销金额'用减法,跟系统保持一致
     If intType = 1 Then '应收
         .Text = Format(Rs.Fields("fpreamount") - Format(dblQty * Rs.Fields("FPrice"), "0.00"), "0.00") ' (Rs.Fields("FPreQty") - dblQty) * Rs.Fields("FPrice")
     ElseIf intType = 2 Then '实收
         .Text = Format(Rs.Fields("fpreamount") - Format(dblRealQty * Rs.Fields("FPrice"), "0.00"), "0.00")
     ElseIf intType = 3 Then '未核销
        .Text = 0 ' Rs.Fields("FPreAmount")
     End If
     
     .Col = 15:  .Lock = True: .TypeHAlign = TypeHAlignRight '本次核销金额,2位小数,四舍五入
     If intType = 1 Then '应收
        .Text = Format(dblQty * Rs.Fields("FPrice"), "0.00")
     ElseIf intType = 2 Then '实收
        .Text = Format(dblRealQty * Rs.Fields("FPrice"), "0.00")
     ElseIf intType = 3 Then '未核销
        .Text = Rs.Fields("FPreAmount"):
     End If
    
     .Col = 16: .Text = Rs.Fields("FPrice"): .Lock = True: .TypeHAlign = TypeHAlignRight
     .Col = 17: .Text = Rs.Fields("Fauxprice"): .Lock = True: .TypeHAlign = TypeHAlignRight
     .Col = 18: .Text = Rs.Fields("forderbillno"): .Lock = True
     .Col = 19: .Text = Rs.Fields("FArapStatus"): .Lock = True
     .Col = 20: .Text = Rs.Fields("FInterid"): .Lock = True
     .Col = 21: .Text = Rs.Fields("FEntryid"): .Lock = True
     .Col = 22: .Text = Rs.Fields("FOrderInterID"): .Lock = True
     .Col = 23: .Text = Rs.Fields("FOrderEntryID"): .Lock = True
     .Col = 24: .Text = Rs.Fields("FPreQty"): .Lock = True '
     .Col = 25: .Text = Rs.Fields("FPreAmount"): .Lock = True
End With
Rs.MoveNext: I = I + 1
Loop
Exit Sub
err_handle:
MsgBox Err.Description & vbCrLf & "", vbOKOnly, "xxxx"
End Sub

Private Sub sprOutBill_EditChange(ByVal Col As Long, ByVal Row As Long)
Dim dbleditqty As Double '修改后的本次核销数量
Dim dbloldpreqty As Double '初始未核销数量
Dim dblprice   As Double '基本单位单价
Dim dblAmount As Double '本次核销金额
Dim dblFPreAmount As Double '未核销金额
On Error GoTo err_handle:
With sprOutBill
    .Row = Row
   
    .Col = Col
    If Trim(.Text) = "" Then
       dbleditqty = 0
    Else
      dbleditqty = CDbl(.Text)
    End If
 
    .Col = 25:
    dblFPreAmount = Format(.Text, "0.00")
    '修改未核销数量
    .Col = 24
    dbloldpreqty = CDbl(.Text)
    .Col = 12
    .Text = dbloldpreqty - dbleditqty
    
    '修改未核销金额
    .Col = 16
    dblprice = CDbl(.Text)
    dblAmount = Format(dblprice * dbleditqty, "0.00")
    .Col = 14
    If dbloldpreqty <> dbleditqty Then
       .Text = Format(dblFPreAmount - dblAmount, "0.00")    '用减法,经过对比,系统就是用的减法,而不是未核销数量*单价  double在做浮点运算有误差
    Else
      .Text = 0
    End If
    '修改本次核销金额
    .Col = 15
    If dbloldpreqty <> dbleditqty Then
       .Text = dblAmount
    ElseIf dbloldpreqty = dbleditqty Then
      .Text = dblFPreAmount
    End If
    If dbloldpreqty < dbleditqty Then
       MsgBox "本次核销数量已经大于未核销数量,请检查", vbOKOnly, "xxxx"
   
    End If
End With
Exit Sub
err_handle:
MsgBox Err.Description & vbCrLf & "sprOutBill_EditChange", vbOKOnly, "xxxx"
End Sub


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值