diff --git a/account_avatax_oca/models/avatax_rest_api.py b/account_avatax_oca/models/avatax_rest_api.py index 14781b89f..3a3a07ce1 100644 --- a/account_avatax_oca/models/avatax_rest_api.py +++ b/account_avatax_oca/models/avatax_rest_api.py @@ -262,22 +262,6 @@ def get_tax( if doc_date and type(doc_date) != str: doc_date = fields.Date.to_string(doc_date) create_transaction = { - "addresses": { - "shipFrom": { - "city": origin.city, - "country": origin.country_id.code or None, - "line1": origin.street or None, - "postalCode": origin.zip, - "region": origin.state_id.code or None, - }, - "shipTo": { - "city": destination.city, - "country": destination.country_id.code or None, - "line1": destination.street or None, - "postalCode": destination.zip, - "region": destination.state_id.code or None, - }, - }, "lines": lineslist, # 'purchaseOrderNo": "2020-02-05-001" "companyCode": company_code, @@ -295,6 +279,24 @@ def get_tax( "type": doc_type, "commit": commit, } + + # Bigin + # Block For Getting Origin and Destination Address + # Segeregate Method for if Destination dosen't have any + # address details get Avatax Tax with using Lattitude and Longitude from Partner + + origin_addresses = origin.get_origin_addresses(origin) + + destination_addresses = destination.get_destination_addresses(destination) + + org_dest_addresses = {"addresses" : origin_addresses} + + org_dest_addresses.get("addresses").update(destination_addresses) + + create_transaction.update(org_dest_addresses) + + # End + if is_override and invoice_date: create_transaction.update( { diff --git a/account_avatax_oca/models/partner.py b/account_avatax_oca/models/partner.py index d5309ae01..137da429c 100644 --- a/account_avatax_oca/models/partner.py +++ b/account_avatax_oca/models/partner.py @@ -211,3 +211,42 @@ def write(self, vals): partner.multi_address_validation(validation_on_save=True) partner.validated_on_save = True return res + + def get_origin_addresses(self, origin): + partner_origin_addresses = { + "shipFrom": { + "city": origin.city, + "country": origin.country_id.code or None, + "line1": origin.street or None, + "postalCode": origin.zip, + "region": origin.state_id.code or None, + }, + } + return partner_origin_addresses + + def get_destination_addresses(self, destination): + partner_destination_addresses = {} + if ( + not destination.city and not destination.zip and not destination.state_id.code + ) and (destination.partner_latitude and destination.partner_longitude): + partner_destination_addresses.update( + { + "coordinates": { + "latitude": destination.partner_latitude, + "longitude": destination.partner_longitude, + } + } + ) + else: + partner_destination_addresses.update( + { + "shipTo": { + "city": destination.city, + "country": destination.country_id.code or None, + "line1": destination.street or None, + "postalCode": destination.zip, + "region": destination.state_id.code or None, + } + } + ) + return partner_destination_addresses