setup calculation to plug sales
This commit is contained in:
parent
d2a9549e77
commit
e7071a777c
130
months.cls
130
months.cls
@ -21,6 +21,7 @@ Private vedit As String
|
||||
Private adjust() As Object
|
||||
Private jtext() As Variant
|
||||
Private basejson As Object
|
||||
Private rollback As Boolean
|
||||
|
||||
|
||||
|
||||
@ -28,13 +29,21 @@ Private Sub Worksheet_Change(ByVal target As Range)
|
||||
|
||||
|
||||
If Not dumping Then
|
||||
|
||||
If target.Columns.Count > 1 Then
|
||||
MsgBox ("you can only change one column at a time - your change will be undone")
|
||||
dumping = True
|
||||
Application.Undo
|
||||
dumping = False
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
If Not Intersect(target, Range("E6:E17")) Is Nothing Then Call Me.mvp_adj
|
||||
If Not Intersect(target, Range("F6:F17")) Is Nothing Then Call Me.mvp_set
|
||||
If Not Intersect(target, Range("K6:K17")) Is Nothing Then Call Me.mvp_adj
|
||||
If Not Intersect(target, Range("L6:L17")) Is Nothing Then Call Me.mvp_set
|
||||
'If Not Intersect(Target, Range("Q6:Q17")) Is Nothing Then Call Me.ms_adj
|
||||
'If Not Intersect(Target, Range("R6:R17")) Is Nothing Then Call Me.ms_set
|
||||
If Not Intersect(target, Range("Q6:Q17")) Is Nothing Then Call Me.ms_adj
|
||||
If Not Intersect(target, Range("R6:R17")) Is Nothing Then Call Me.ms_set
|
||||
|
||||
End If
|
||||
|
||||
@ -89,15 +98,102 @@ Sub ms_set()
|
||||
|
||||
Dim i As Integer
|
||||
Call Me.get_sheet
|
||||
Dim vp As String
|
||||
vp = Sheets("month").Range("R2")
|
||||
|
||||
For i = 1 To 12
|
||||
units(i, 4) = units(i, 5) - (units(i, 2) + units(i, 3))
|
||||
price(i, 4) = price(i, 5) - (price(i, 2) + price(i, 3))
|
||||
sales(i, 5) = units(i, 5) * price(i, 5)
|
||||
sales(i, 4) = sales(i, 5) - (sales(i, 2) + sales(i, 3))
|
||||
If Round(sales(i, 5) - (sales(i, 2) + sales(i, 3)), 6) <> Round(sales(i, 4), 6) Then
|
||||
sales(i, 4) = sales(i, 5) - (sales(i, 2) + sales(i, 3))
|
||||
Select Case vp
|
||||
Case "volume"
|
||||
If co_num(price(i, 5), 0) = 0 Then
|
||||
MsgBox ("price cannot be -0- and also have sales - your change will be undone")
|
||||
dumping = True
|
||||
Application.Undo
|
||||
dumping = False
|
||||
Exit Sub
|
||||
End If
|
||||
'reset price to original - delete these lines if a cascading effect is desired
|
||||
'price(i, 4) = 0
|
||||
'price(i, 5) = price(i, 2) + price(i, 3)
|
||||
'calc volume change on original price
|
||||
units(i, 5) = sales(i, 5) / price(i, 5)
|
||||
units(i, 4) = units(i, 5) - (units(i, 2) + units(i, 3))
|
||||
Case "price"
|
||||
If co_num(units(i, 5), 0) = 0 Then
|
||||
MsgBox ("volume cannot be -0- and also have sales - your change will be undone")
|
||||
dumping = True
|
||||
Application.Undo
|
||||
dumping = False
|
||||
Exit Sub
|
||||
End If
|
||||
price(i, 5) = sales(i, 5) / units(i, 5)
|
||||
price(i, 4) = price(i, 5) - (price(i, 2) + price(i, 3))
|
||||
Case Else
|
||||
MsgBox ("error forcing sales with no offset specified - your change will be undone")
|
||||
dumping = True
|
||||
Application.Undo
|
||||
dumping = False
|
||||
Exit Sub
|
||||
End Select
|
||||
End If
|
||||
Call Me.build_json(i)
|
||||
Next i
|
||||
|
||||
set_sheet
|
||||
Me.crunch_array
|
||||
Me.set_sheet
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Sub ms_adj()
|
||||
|
||||
Dim i As Integer
|
||||
Call Me.get_sheet
|
||||
Dim vp As String
|
||||
vp = Sheets("month").Range("R2")
|
||||
|
||||
For i = 1 To 12
|
||||
If Round(sales(i, 5), 6) <> Round(sales(i, 2) + sales(i, 3) + sales(i, 4), 6) Then
|
||||
sales(i, 5) = sales(i, 4) + sales(i, 2) + sales(i, 3)
|
||||
Select Case vp
|
||||
Case "volume"
|
||||
If co_num(price(i, 5), 0) = 0 Then
|
||||
MsgBox ("price cannot be -0- and also have sales - your change will be undone")
|
||||
dumping = True
|
||||
Application.Undo
|
||||
dumping = False
|
||||
Exit Sub
|
||||
End If
|
||||
'reset price to original
|
||||
'price(i, 4) = 0
|
||||
'price(i, 5) = price(i, 2) + price(i, 3)
|
||||
'calc volume change on original price
|
||||
units(i, 5) = sales(i, 5) / price(i, 5)
|
||||
units(i, 4) = units(i, 5) - (units(i, 2) + units(i, 3))
|
||||
Case "price"
|
||||
If co_num(units(i, 5), 0) = 0 Then
|
||||
MsgBox ("volume cannot be -0- and also have sales - your change will be undone")
|
||||
dumping = True
|
||||
Application.Undo
|
||||
dumping = False
|
||||
Exit Sub
|
||||
End If
|
||||
price(i, 5) = sales(i, 5) / units(i, 5)
|
||||
price(i, 4) = price(i, 5) - (price(i, 2) + price(i, 3))
|
||||
Case Else
|
||||
MsgBox ("error forcing sales with no offset specified - your change will be undone")
|
||||
dumping = True
|
||||
Application.Undo
|
||||
dumping = False
|
||||
Exit Sub
|
||||
End Select
|
||||
End If
|
||||
Call Me.build_json(i)
|
||||
Next i
|
||||
|
||||
Me.crunch_array
|
||||
Me.set_sheet
|
||||
|
||||
|
||||
End Sub
|
||||
@ -274,7 +370,7 @@ Sub build_json(ByVal pos As Integer)
|
||||
|
||||
'if something is changing
|
||||
If Round(units(pos, 4), 2) <> 0 Or Round(price(pos, 4), 8) <> 0 Or Round(sales(pos, 4), 8) <> 0 Then
|
||||
Set adjust(pos) = basejson
|
||||
Set adjust(pos) = JsonConverter.ParseJson(JsonConverter.ConvertToJson(basejson))
|
||||
'if there is no existing volume on the target month but units are being added
|
||||
If units(pos, 2) + units(pos, 3) = 0 And units(pos, 4) <> 0 Then
|
||||
'add month
|
||||
@ -326,7 +422,11 @@ Sub crunch_array()
|
||||
'base
|
||||
tprice(1, 2) = tsales(1, 2) / tunits(1, 2)
|
||||
'forecast
|
||||
tprice(1, 5) = tsales(1, 5) / tunits(1, 5)
|
||||
If tunits(1, 5) <> 0 Then
|
||||
tprice(1, 5) = tsales(1, 5) / tunits(1, 5)
|
||||
Else
|
||||
tprice(1, 5) = 0
|
||||
End If
|
||||
'adjust
|
||||
tprice(1, 3) = (tsales(1, 2) + tsales(1, 3)) / (tunits(1, 2) + tunits(1, 3)) - tprice(1, 2)
|
||||
'current adjust
|
||||
@ -334,3 +434,15 @@ Sub crunch_array()
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Sub cancel()
|
||||
|
||||
Sheets("Orders").Select
|
||||
|
||||
End Sub
|
||||
|
||||
Sub reset()
|
||||
|
||||
Call Me.load_sheet
|
||||
|
||||
End Sub
|
||||
|
Loading…
Reference in New Issue
Block a user