add logic to build json and call api
This commit is contained in:
		
							parent
							
								
									6794d8ff9a
								
							
						
					
					
						commit
						42fad8ab1a
					
				
							
								
								
									
										155
									
								
								fpvt.frm
									
									
									
									
									
								
							
							
						
						
									
										155
									
								
								fpvt.frm
									
									
									
									
									
								
							@ -74,7 +74,15 @@ End Sub
 | 
			
		||||
 | 
			
		||||
Private Sub butMAdjust_Click()
 | 
			
		||||
 | 
			
		||||
    Dim i As Integer
 | 
			
		||||
 | 
			
		||||
    For i = 1 To 12
 | 
			
		||||
        If month(i, 10) <> "" Then
 | 
			
		||||
            Call handler.request_adjust(CStr(month(i, 10)))
 | 
			
		||||
        End If
 | 
			
		||||
    Next i
 | 
			
		||||
    
 | 
			
		||||
    Me.Hide
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
End Sub
 | 
			
		||||
@ -505,44 +513,25 @@ Sub calc_val()
 | 
			
		||||
    tbFcVal = Format(CDbl(tbFcVal), "#,##0")
 | 
			
		||||
    
 | 
			
		||||
    'build json
 | 
			
		||||
    Set adjust = JsonConverter.ParseJson("{""scneario"":" & scenario & "}")
 | 
			
		||||
    adjust("type") = "increment"
 | 
			
		||||
    If opPlugVol Then
 | 
			
		||||
        adjust("vp") = "v"
 | 
			
		||||
    Else
 | 
			
		||||
        adjust("vp") = "p"
 | 
			
		||||
    End If
 | 
			
		||||
    adjust("amount") = tbAdjVal
 | 
			
		||||
    Set adjust = JsonConverter.ParseJson("{""scenario"":" & scenario & "}")
 | 
			
		||||
    adjust("stamp") = Format(Date + time, "yyyy-mm-dd hh:mm:ss")
 | 
			
		||||
    adjust("user") = Application.UserName
 | 
			
		||||
    If opEditSales Then
 | 
			
		||||
        If opPlugVol Then
 | 
			
		||||
            adjust("type") = "scale_v"
 | 
			
		||||
            adjust("amount") = tbAdjVal
 | 
			
		||||
        Else
 | 
			
		||||
            adjust("type") = "scale_p"
 | 
			
		||||
            adjust("amount") = tbAdjVal
 | 
			
		||||
        End If
 | 
			
		||||
    Else
 | 
			
		||||
        adjust("type") = "scale_vp"
 | 
			
		||||
        adjust("qty") = tbAdjVol
 | 
			
		||||
        adjust("amount") = tbAdjVal
 | 
			
		||||
    End If
 | 
			
		||||
    
 | 
			
		||||
    'print json
 | 
			
		||||
    'tbJSON = JsonConverter.ConvertToJson(adjust)
 | 
			
		||||
 | 
			
		||||
End Sub
 | 
			
		||||
 | 
			
		||||
Sub calc_vol()
 | 
			
		||||
 | 
			
		||||
    Dim pchange As Double
 | 
			
		||||
    
 | 
			
		||||
    If IsNumeric(tbFcVol.value) And tbFcVol <> 0 Then
 | 
			
		||||
        'price should already have been re-calculated to base + prior at this point
 | 
			
		||||
        tbFcVal = Format(CDbl(tbFcPrice.value) * CDbl(tbFcVol.value))
 | 
			
		||||
    
 | 
			
		||||
        'calculate percent change
 | 
			
		||||
        'pchange = CDbl(tbFcVal.value) / (CDbl(tbPadjVal.value) + CDbl(tbBaseVal.value))
 | 
			
		||||
        
 | 
			
		||||
        'plug the adjustment required
 | 
			
		||||
        tbAdjVal = Format(CDbl(tbFcVal.value) - CDbl(tbBaseVal.value) - CDbl(tbPadjVal.value), "#,###")
 | 
			
		||||
        tbAdjVol = Format(tbFcVol - (CDbl(tbBaseVol) + CDbl(tbPadjVol)), "#,###")
 | 
			
		||||
        tbAdjPrice = Format(CDbl(tbFcVal.value) / CDbl(tbFcVol.value) - ((CDbl(tbBaseVal.value) + CDbl(tbPadjVal.value)) / (CDbl(tbBaseVol.value) + CDbl(tbPadjVol.value))), "#.000")
 | 
			
		||||
    Else
 | 
			
		||||
        tbFcVal = 0
 | 
			
		||||
        tbAdjVal = Format(CDbl(tbFcVal.value) - CDbl(tbBaseVal.value) - CDbl(tbPadjVal.value), "#,###")
 | 
			
		||||
        tbAdjPrice = Format((tbBaseVal + tbPadjVal) / (tbBaseVol + tbPadjVol), "#.000")
 | 
			
		||||
        tbAdjVol = Format(-CDbl(tbBaseVol.value) - CDbl(tbPadjVol.value), "#,###")
 | 
			
		||||
    End If
 | 
			
		||||
    tbFcVal = Format(tbFcVal, "#,###")
 | 
			
		||||
    tbAPI = JsonConverter.ConvertToJson(adjust)
 | 
			
		||||
 | 
			
		||||
End Sub
 | 
			
		||||
 | 
			
		||||
@ -558,12 +547,34 @@ Sub calc_price()
 | 
			
		||||
        tbAdjVal = Format(CDbl(tbFcVal.value) - CDbl(tbBaseVal.value) - CDbl(tbPadjVal.value), "#,###")
 | 
			
		||||
    End If
 | 
			
		||||
    
 | 
			
		||||
    'build json
 | 
			
		||||
    Set adjust = JsonConverter.ParseJson("{""scenario"":" & scenario & "}")
 | 
			
		||||
    adjust("stamp") = Format(Date + time, "yyyy-mm-dd hh:mm:ss")
 | 
			
		||||
    adjust("user") = Application.UserName
 | 
			
		||||
    If opEditSales Then
 | 
			
		||||
        If opPlugVol Then
 | 
			
		||||
            adjust("type") = "scale_v"
 | 
			
		||||
            adjust("amount") = tbAdjVal
 | 
			
		||||
        Else
 | 
			
		||||
            adjust("type") = "scale_p"
 | 
			
		||||
            adjust("amount") = tbAdjVal
 | 
			
		||||
        End If
 | 
			
		||||
    Else
 | 
			
		||||
        adjust("type") = "scale_vp"
 | 
			
		||||
        adjust("qty") = tbAdjVol
 | 
			
		||||
        adjust("amount") = tbAdjVal
 | 
			
		||||
    End If
 | 
			
		||||
 | 
			
		||||
    'print json
 | 
			
		||||
    tbAPI = JsonConverter.ConvertToJson(adjust)
 | 
			
		||||
    
 | 
			
		||||
End Sub
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Sub calc_mval()
 | 
			
		||||
 | 
			
		||||
    Dim pchange As Double
 | 
			
		||||
    Dim j As Object
 | 
			
		||||
    
 | 
			
		||||
    If IsNumeric(tbMFVal.value) Then
 | 
			
		||||
        'get textbox value
 | 
			
		||||
@ -592,6 +603,42 @@ Sub calc_mval()
 | 
			
		||||
    End If
 | 
			
		||||
    tbMFVal = Format(tbMFVal, "#,###")
 | 
			
		||||
    
 | 
			
		||||
    'build json
 | 
			
		||||
    Set j = JsonConverter.ParseJson("{""scenario"":" & scenario & "}")
 | 
			
		||||
    j("stamp") = Format(Date + time, "yyyy-mm-dd hh:mm:ss")
 | 
			
		||||
    j("user") = Application.UserName
 | 
			
		||||
    If opEditSalesM Then
 | 
			
		||||
        If opmvol Then
 | 
			
		||||
            If nomonth Then
 | 
			
		||||
                j("type") = "addmonth_v"
 | 
			
		||||
                j("month") = month(mline, 0)
 | 
			
		||||
            Else
 | 
			
		||||
                j("type") = "scale_v"
 | 
			
		||||
            End If
 | 
			
		||||
            j("amount") = aValm
 | 
			
		||||
        Else
 | 
			
		||||
            If nomonth Then
 | 
			
		||||
                j("type") = "addmonth_p"
 | 
			
		||||
                j("month") = month(mline, 0)
 | 
			
		||||
            Else
 | 
			
		||||
                j("type") = "scale_p"
 | 
			
		||||
            End If
 | 
			
		||||
            j("amount") = aValm
 | 
			
		||||
        End If
 | 
			
		||||
    Else
 | 
			
		||||
        If nomonth Then
 | 
			
		||||
            j("type") = "addmonth_vp"
 | 
			
		||||
            j("month") = month(mline, 0)
 | 
			
		||||
        Else
 | 
			
		||||
            j("type") = "scale_vp"
 | 
			
		||||
        End If
 | 
			
		||||
        j("qty") = aVolm
 | 
			
		||||
        j("amount") = aValm
 | 
			
		||||
    End If
 | 
			
		||||
    
 | 
			
		||||
    month(mline, 10) = JsonConverter.ConvertToJson(j)
 | 
			
		||||
    tbAPI = JsonConverter.ConvertToJson(j)
 | 
			
		||||
    
 | 
			
		||||
    Me.load_mbox
 | 
			
		||||
    Me.load_array
 | 
			
		||||
    
 | 
			
		||||
@ -599,6 +646,8 @@ End Sub
 | 
			
		||||
 | 
			
		||||
Sub calc_mprice()
 | 
			
		||||
 | 
			
		||||
    Dim j As Object
 | 
			
		||||
 | 
			
		||||
    If IsNumeric(tbMFPrice.value) And tbMFPrice.value <> 0 And IsNumeric(tbMFVol.value) And tbMFVol.value <> 0 Then
 | 
			
		||||
        'capture currently changed item
 | 
			
		||||
        fVolm = tbMFVol.value
 | 
			
		||||
@ -617,6 +666,44 @@ Sub calc_mprice()
 | 
			
		||||
        aValm = fValm - bValm - pValm
 | 
			
		||||
    End If
 | 
			
		||||
    
 | 
			
		||||
    'build json
 | 
			
		||||
    Set j = JsonConverter.ParseJson("{""scenario"":" & scenario & "}")
 | 
			
		||||
    j("stamp") = Format(Date + time, "yyyy-mm-dd hh:mm:ss")
 | 
			
		||||
    j("user") = Application.UserName
 | 
			
		||||
    If opEditSalesM Then
 | 
			
		||||
        If opmvol Then
 | 
			
		||||
            If nomonth Then
 | 
			
		||||
                j("type") = "addmonth_v"
 | 
			
		||||
                j("month") = month(mline, 0)
 | 
			
		||||
            Else
 | 
			
		||||
                j("type") = "scale_v"
 | 
			
		||||
            End If
 | 
			
		||||
            j("amount") = aValm
 | 
			
		||||
        Else
 | 
			
		||||
            If nomonth Then
 | 
			
		||||
                'this scenario should be prevented
 | 
			
		||||
                j("type") = "addmonth_v"
 | 
			
		||||
                j("month") = month(mline, 0)
 | 
			
		||||
            Else
 | 
			
		||||
                j("type") = "scale_p"
 | 
			
		||||
            End If
 | 
			
		||||
            j("amount") = aValm
 | 
			
		||||
        End If
 | 
			
		||||
    Else
 | 
			
		||||
        If nomonth Then
 | 
			
		||||
            j("type") = "addmonth_vp"
 | 
			
		||||
            j("month") = month(mline, 0)
 | 
			
		||||
        Else
 | 
			
		||||
            j("type") = "scale_vp"
 | 
			
		||||
        End If
 | 
			
		||||
        j("qty") = aVolm
 | 
			
		||||
        j("amount") = aValm
 | 
			
		||||
    End If
 | 
			
		||||
    
 | 
			
		||||
    month(mline, 10) = JsonConverter.ConvertToJson(j)
 | 
			
		||||
    tbAPI = JsonConverter.ConvertToJson(j)
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    If clear_lb Then MsgBox ("clear")
 | 
			
		||||
    Me.load_mbox
 | 
			
		||||
    Me.load_array
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										142
									
								
								handler.bas
									
									
									
									
									
								
							
							
						
						
									
										142
									
								
								handler.bas
									
									
									
									
									
								
							@ -40,61 +40,6 @@ Sub load_fpvt()
 | 
			
		||||
 | 
			
		||||
End Sub
 | 
			
		||||
 | 
			
		||||
Function request_adjust(doc As String) As Object
 | 
			
		||||
 | 
			
		||||
    Dim req As New WinHttp.WinHttpRequest
 | 
			
		||||
    Dim json As Object
 | 
			
		||||
    Dim wr As String
 | 
			
		||||
    
 | 
			
		||||
    With req
 | 
			
		||||
        '.Open "GET", "http://10.56.1.15:3000/scenario_totals", True
 | 
			
		||||
        '.Open "GET", "http://10.56.1.15:3000/scenario_totals", True
 | 
			
		||||
        .Open "GET", "http://localhost:3000/request_adjust", True
 | 
			
		||||
        .SetRequestHeader "Content-Type", "application/json"
 | 
			
		||||
        .Send doc
 | 
			
		||||
        .WaitForResponse
 | 
			
		||||
        wr = .ResponseText
 | 
			
		||||
    End With
 | 
			
		||||
 | 
			
		||||
    Set json = JsonConverter.ParseJson(wr)
 | 
			
		||||
    Set scenario_totals = json
 | 
			
		||||
    
 | 
			
		||||
End Function
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Function scenario_totals(doc As String, ByRef status As Boolean) As Object
 | 
			
		||||
 | 
			
		||||
    Dim req As New WinHttp.WinHttpRequest
 | 
			
		||||
    Dim json As Object
 | 
			
		||||
    Dim wr As String
 | 
			
		||||
    
 | 
			
		||||
    On Error GoTo errh
 | 
			
		||||
    
 | 
			
		||||
    With req
 | 
			
		||||
        '.Open "GET", "http://10.56.1.15:3000/scenario_totals", True
 | 
			
		||||
        .Open "GET", "http://10.56.1.15:3000/scenario_totals", True
 | 
			
		||||
        '.Open "GET", "http://localhost:3000/scenario_totals", True
 | 
			
		||||
        .SetRequestHeader "Content-Type", "application/json"
 | 
			
		||||
        .Send doc
 | 
			
		||||
        .WaitForResponse
 | 
			
		||||
        wr = .ResponseText
 | 
			
		||||
    End With
 | 
			
		||||
 | 
			
		||||
    Set json = JsonConverter.ParseJson(wr)
 | 
			
		||||
    Set scenario_totals = json
 | 
			
		||||
    
 | 
			
		||||
errh:
 | 
			
		||||
    If Err.Number <> 0 Then
 | 
			
		||||
        status = False
 | 
			
		||||
        MsgBox (Err.Description)
 | 
			
		||||
        Set scenario_totals = Nothing
 | 
			
		||||
    Else
 | 
			
		||||
        status = True
 | 
			
		||||
    End If
 | 
			
		||||
    
 | 
			
		||||
End Function
 | 
			
		||||
 | 
			
		||||
Function scenario_package(doc As String, ByRef status As Boolean) As Object
 | 
			
		||||
 | 
			
		||||
    Dim req As New WinHttp.WinHttpRequest
 | 
			
		||||
@ -236,6 +181,7 @@ Sub pg_main_workset(rep As String)
 | 
			
		||||
    Next i
 | 
			
		||||
    
 | 
			
		||||
    Call x.SHTp_Dump(str, "data", 1, 1, True, False, 28, 29, 30, 31, 32)
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
End Sub
 | 
			
		||||
 | 
			
		||||
@ -268,3 +214,89 @@ Sub test()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
End Sub
 | 
			
		||||
 | 
			
		||||
Function request_adjust(doc As String) As Object
 | 
			
		||||
 | 
			
		||||
    Dim req As New WinHttp.WinHttpRequest
 | 
			
		||||
    Dim json As Object
 | 
			
		||||
    Dim wr As String
 | 
			
		||||
    Dim i As Integer
 | 
			
		||||
    Dim j As Integer
 | 
			
		||||
    Dim str() As String
 | 
			
		||||
    
 | 
			
		||||
    Set json = JsonConverter.ParseJson(doc)
 | 
			
		||||
    
 | 
			
		||||
    With req
 | 
			
		||||
        '.Open "GET", "http://10.56.1.15:3000/scenario_totals", True
 | 
			
		||||
        '.Open "GET", "http://10.56.1.15:3000/scenario_totals", True
 | 
			
		||||
        .Open "GET", "http://192.168.1.69:3000/" & json("type"), True
 | 
			
		||||
        .SetRequestHeader "Content-Type", "application/json"
 | 
			
		||||
        .Send doc
 | 
			
		||||
        .WaitForResponse
 | 
			
		||||
        wr = .ResponseText
 | 
			
		||||
    End With
 | 
			
		||||
 | 
			
		||||
    Set json = JsonConverter.ParseJson(wr)
 | 
			
		||||
    
 | 
			
		||||
    ReDim res(json("x").Count - 1, 32)
 | 
			
		||||
    
 | 
			
		||||
    For i = 1 To UBound(res, 1) + 1
 | 
			
		||||
        res(i - 1, 0) = json("x")(i)("bill_cust_descr")
 | 
			
		||||
        res(i - 1, 1) = json("x")(i)("billto_group")
 | 
			
		||||
        res(i - 1, 2) = json("x")(i)("ship_cust_descr")
 | 
			
		||||
        res(i - 1, 3) = json("x")(i)("shipto_group")
 | 
			
		||||
        res(i - 1, 4) = json("x")(i)("quota_rep_descr")
 | 
			
		||||
        res(i - 1, 5) = json("x")(i)("director_descr")
 | 
			
		||||
        res(i - 1, 6) = json("x")(i)("segm")
 | 
			
		||||
        res(i - 1, 7) = json("x")(i)("mod_chan")
 | 
			
		||||
        res(i - 1, 8) = json("x")(i)("mod_chansub")
 | 
			
		||||
        res(i - 1, 9) = json("x")(i)("majg_descr")
 | 
			
		||||
        res(i - 1, 10) = json("x")(i)("ming_descr")
 | 
			
		||||
        res(i - 1, 11) = json("x")(i)("majs_descr")
 | 
			
		||||
        res(i - 1, 12) = json("x")(i)("mins_descr")
 | 
			
		||||
        res(i - 1, 13) = json("x")(i)("brand")
 | 
			
		||||
        res(i - 1, 14) = json("x")(i)("part_family")
 | 
			
		||||
        res(i - 1, 15) = json("x")(i)("part_group")
 | 
			
		||||
        res(i - 1, 16) = json("x")(i)("branding")
 | 
			
		||||
        res(i - 1, 17) = json("x")(i)("color")
 | 
			
		||||
        res(i - 1, 18) = json("x")(i)("part_descr")
 | 
			
		||||
        res(i - 1, 19) = json("x")(i)("order_season")
 | 
			
		||||
        res(i - 1, 20) = json("x")(i)("order_month")
 | 
			
		||||
        res(i - 1, 21) = json("x")(i)("ship_season")
 | 
			
		||||
        res(i - 1, 22) = json("x")(i)("ship_month")
 | 
			
		||||
        res(i - 1, 23) = json("x")(i)("request_season")
 | 
			
		||||
        res(i - 1, 24) = json("x")(i)("request_month")
 | 
			
		||||
        res(i - 1, 25) = json("x")(i)("promo")
 | 
			
		||||
        res(i - 1, 26) = json("x")(i)("version")
 | 
			
		||||
        res(i - 1, 27) = json("x")(i)("iter")
 | 
			
		||||
        res(i - 1, 28) = json("x")(i)("value_loc")
 | 
			
		||||
        res(i - 1, 29) = json("x")(i)("value_usd")
 | 
			
		||||
        res(i - 1, 30) = json("x")(i)("cost_loc")
 | 
			
		||||
        res(i - 1, 31) = json("x")(i)("cost_usd")
 | 
			
		||||
        res(i - 1, 32) = json("x")(i)("units")
 | 
			
		||||
    Next i
 | 
			
		||||
    
 | 
			
		||||
    Set json = Nothing
 | 
			
		||||
 | 
			
		||||
    ReDim str(UBound(res, 1), UBound(res, 2))
 | 
			
		||||
    
 | 
			
		||||
    For i = 0 To UBound(res, 1)
 | 
			
		||||
        For j = 0 To UBound(res, 2)
 | 
			
		||||
            If IsNull(res(i, j)) Then
 | 
			
		||||
                str(i, j) = ""
 | 
			
		||||
            Else
 | 
			
		||||
                str(i, j) = res(i, j)
 | 
			
		||||
            End If
 | 
			
		||||
        Next j
 | 
			
		||||
    Next i
 | 
			
		||||
    
 | 
			
		||||
    Do Until Sheets("data").Cells(i, 1) = ""
 | 
			
		||||
        i = i + 1
 | 
			
		||||
    Loop
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    Call x.SHTp_Dump(str, "data", CLng(i), 1, False, False, 28, 29, 30, 31, 32)
 | 
			
		||||
    
 | 
			
		||||
    Sheets("Orders").PivotTables("PivotTable1").PivotCache.Refresh
 | 
			
		||||
    
 | 
			
		||||
End Function
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user