Boa tarde!
O teu erro está na soma mesmo da base de calculo dos itens.
Veja:
Uma sugestão. Não divida o frete por quantidade de itens. Faça por valor proporcional ao valor do produto.
Pois desta forma imagina que vc tivesse uma geladeira um abraçadeira. Ai tivesse um valor de 3,000,00 em um item e 0,20 centavos na abraçadeira e um frete de 100 reais. Se vc divide por dois vc estaria colocando 50,00 na geladeira e 50,00 em uma abraçadeira que custa 0,20. Ai quem coleta a composição do custo pelo XML acaba tendo problema com isto, pois o custo da abraçadeira estaria saindo por 50,20 e se o comerciante tiver 100% de margem ele estaria vendendo por 0,40. Entendeu?
O correto ai seria o seguinte calculo:
Soma dos itens: 456,00
Valor do frete: 12,50
Calculo para achar o fator de multiplicação proporcional ao frete:
(Vl.frete/Valorprodutos)*100=fator_multiplicador (12,50/456)*100=2,741228
Valor do item 1 = 90,00 // (90/100)*2,741228=2,467 (valor do frete proporcional ao valor do item 1 = 2,467)
Valor do item 2 = 312,00 // (312/100)*2,741228=8,553 (valor do frete proporcional ao valor do item 2 = 8,553)
Valor do item 3 = 54,00 // (54/100)*2,74,1228=1,480 (valor do frete proporcional ao valor do item 3 = 1,480)
Valor dos produtos (90+312+54)= 456,00
Valor do frete: (2,467+8,553+1,480)= 12,50