Th is my first post, I'm new here. I tried the ASP.Net forum, but not a single person answered.

I write software for shopping carts. I just added freight quotes because of the high demand for it. Writing the XML request and response was easy. Little did I know, I would have to reshape, or package items into cube like shapes, to fit them on pallets. I've been working on formula's that I could translate in vb.net, but none of my formulas seem efficient. Each time I add a new scenario, I break my formula and have to start again.

Scenario 1

I have a folding chair that is flat packed in a cardboard box that is

Length: 35

Width: 17

Height: 4

Let's say the customer orders 10 of them. I could take the Length * Qty for

Length : 350

Width: 17

Height: 4

Now I have a long box that won't fit on the truck.

The typical pallet is: L: 44 W: 40 H: 70

If the customer orders 50 chairs, then it spills over to two pallets.

I need help, or a point in the right direction. I've tried doing the math via SQL SELECT SUM(Qty * Length) FROM ShoppingCart WHERE SessionID=@SessionID, but I don't have a formula

I tried Code, where I loop through the QTY and build up the dimensions, but ended up with so much wasted space.

My lastest Code

Do Until Calculated_CubicSize >= Total_CubicSize

If Calculated_CubicSize <= Total_CubicSize Then

If ldx < Max_LengthCount Then

Dim idx As Integer = 0

Total_Width = Total_Width + Width

Do Until ldx = Max_LengthCount - 1 Or CountDown_Qty = 0

CountDown_Qty = CountDown_Qty - 1

Total_Length = Total_Length + Length

Calculated_CubicSize = Calculated_CubicSize + CubicSize

idx += 1

If idx = Max_LengthCount Then

ldx += 1

idx = 0

End If

Loop

ldx = 0

wdx = 1

hdx = 1

End If

Else

Exit Do

End If

If Calculated_CubicSize <= Total_CubicSize Then

If wdx < Max_WidthCount Then

Dim idx As Integer = 0

Do Until wdx = Max_WidthCount Or CountDown_Qty = 0

CountDown_Qty = CountDown_Qty - 1

Calculated_CubicSize = Calculated_CubicSize + CubicSize

Total_Width = Total_Width + Width

wdx += 1

If idx = Max_WidthCount Then

'Total_Width = Total_Width - Width

idx = 0

Else

End If

Loop

wdx = 0

hdx = 1

End If

Else

Exit Do

End If

If Calculated_CubicSize <= Total_CubicSize Then

Dim idx As Integer = 0

Total_Height = Total_Height + Height

Do Until hdx = Max_HeightCount Or CountDown_Qty = 0

CountDown_Qty = CountDown_Qty - 1

Calculated_CubicSize = Calculated_CubicSize + CubicSize

idx += 1

If idx = Max_HeightCount Then

Total_Height = Total_Height + Height

idx = 0

hdx += 1

End If

Loop

Else

Exit Do

End If