you will need to have a cart column to determine if the item is sold by weight or not. in this itemType column, set the value to 1 for items that are sold by weight and 2 for item that use the regular price.
Then in the eCart object create a new calculation called real price.
the calculation should be:
(([itemType] == 1)?[Price] * [Weight]:[Price])
This basicly says:
Is the value in the itemType column 1?
Yes: set the price to Price * Weight
No: Set the price to Price
you will also need to change the Total price calculation from:
[Price] * [Quantity]
(([itemType] == 1)?[Price] * [Weight]:[Price]) * [Quantity]
In the cart display, you will need to change it from showing the Price column to showing the realPrice calcualtion.
You will also need to modify the checkout behaviors to pass the realPrice calculation to the gateway instead of the Price calculation.
Yes, please start a new thread for the delivery booking issue.