To be honest I have tried to find this answer on several communities but unfortunately this question did not get enough attention.
I did similar job a very lengthy way. Maybe following hints can help you.
I have divided all the countries in the zones. And then I have created lots of Flat Rate services like following
Zone 1 - 0.5KG (Machine name: zone_1_0_5kg)
edit configure component delete
Zone 1 - (10 to 19) KG (Machine name: zone_1_10_to_19_kg)
edit configure component delete
Zone 1 - 1.0KG (Machine name: zone_1_1_0kg)
edit configure component delete
Zone 1 - 1.5KG (Machine name: zone_1_1_5kg)
edit configure component delete
Zone 1 - 20+ KG (Machine name: zone_1_20_kg)
edit configure component delete
Zone 1 - 2.0KG (Machine name: zone_1_2_0kg)
edit configure component delete
Zone 1 - 2.5KG (Machine name: zone_1_2_5kg)
edit configure component delete
Zone 1 - 3.0KG (Machine name: zone_1_3_0kg)
edit configure component delete
Zone 1 - 3.5KG (Machine name: zone_1_3_5kg)
edit configure component delete
Zone 1 - 4.0KG (Machine name: zone_1_4_0kg)
edit configure component delete
Zone 1 - 4.5KG (Machine name: zone_1_4_5kg)
edit configure component delete
Zone 1 - 5.0 KG (Machine name: zone_1_5_0_kg)
edit configure component delete
Zone 1 - (6 to 9) KG (Machine name: zone_1_6_to_9_kg)
edit configure component delete
Zone 2 - 0.5KG (Machine name: zone_2_0_5kg)
edit configure component delete
Zone 2 - (10 to 19) KG (Machine name: zone_2_10_to_19_kg)
edit configure component delete
Zone 2 - 1.0KG (Machine name: zone_2_1_0kg)
edit configure component delete
Zone 2 - 1.5KG (Machine name: zone_2_1_5kg)
edit configure component delete
Zone 2 - 20+ KG (Machine name: zone_2_20_kg)
edit configure component delete
Zone 2 - 2.0KG (Machine name: zone_2_2_0kg)
edit configure component delete
Zone 2 - 2.5KG (Machine name: zone_2_2_5kg)
edit configure component delete
Zone 2 - 3.0KG (Machine name: zone_2_3_0kg)
Configured Each Flat Rate services like following
Order address component comparison
Parameter: Order: [commerce_order], Address: Address, Address component: Country, Operator: is one of, Value: AL ...
editdelete
AND
editdeleteAdd conditionAdd orAdd and
Order total weight comparison
Parameter: Order: [commerce_order], Operator: >=, Value: 2.6
editdelete
AND
editdeleteAdd conditionAdd orAdd and
Order total weight comparison
Parameter: Order: [commerce_order], Operator: <=, Value: 3.0
---
Created several rules like following
Calculate Shipping Amount by Weight 6 to 9 Zone 3
Machine name: rules_calculate_shipping_amount_by_weight_6_to_9_zone_3
Parameter: Line Item (line_item)
Provides variables: Shipping Cost For Line Item (shipping_cost_for_line_item)
export of this rule is pasted below
{ "rules_calculate_shipping_amount_by_weight_6_to_9_zone_3" : {
"LABEL" : "Calculate Shipping Amount by Weight 6 to 9 Zone 3",
"PLUGIN" : "rule",
"OWNER" : "rules",
"REQUIRES" : [ "commerce_order", "rules", "commerce_physical" ],
"USES VARIABLES" : {
"line_item" : { "label" : "Line Item", "type" : "commerce_line_item" },
"shipping_cost_for_line_item" : {
"label" : "Shipping Cost For Line Item",
"type" : "decimal",
"parameter" : false
}
},
"IF" : [
{ "commerce_order_compare_address" : {
"commerce_order" : [ "line-item:order" ],
"address_field" : "commerce_customer_shipping|commerce_customer_address",
"address_component" : "country",
"operator" : "is one of",
"value" : "CA\r\nUS"
}
},
{ "entity_has_field" : { "entity" : [ "line-item" ], "field" : "commerce_product" } },
{ "entity_has_field" : { "entity" : [ "line-item:commerce-product" ], "field" : "field_weight" } },
{ "commerce_physical_rules_order_weight_comparison" : {
"commerce_order" : [ "line-item:order" ],
"operator" : "\u003E=",
"value" : "6",
"unit" : "kg"
}
},
{ "AND" : [
{ "commerce_physical_rules_order_weight_comparison" : {
"commerce_order" : [ "line-item:order" ],
"operator" : "\u003C=",
"value" : "9.9",
"unit" : "kg"
}
}
]
}
],
"DO" : [
{ "data_calc" : {
"USING" : {
"input_1" : [ "line-item:commerce-product:field-weight:weight" ],
"op" : "*",
"input_2" : [ "line-item:quantity" ]
},
"PROVIDE" : { "result" : { "weight_for_line_item" : "Weight for line item" } }
}
},
{ "data_calc" : {
"USING" : { "input_1" : [ "weight-for-line-item" ], "op" : "*", "input_2" : "5300" },
"PROVIDE" : { "result" : { "line_item_calculated_shipping_cost" : "Line item calculated shipping cost" } }
}
},
{ "data_set" : {
"data" : [ "shipping-cost-for-line-item" ],
"value" : [ "line-item-calculated-shipping-cost" ]
}
}
],
"PROVIDES VARIABLES" : [ "shipping_cost_for_line_item" ]
}
}