From 3b8332e7e0aafcd2dc5e2025677d6f3ff2cd871b Mon Sep 17 00:00:00 2001 From: Hardik Suthar Date: Thu, 23 May 2024 21:57:49 +0530 Subject: [PATCH 1/2] [IMP]Extract address API values construction to a dedicated method --- account_avatax_oca/models/avatax_rest_api.py | 38 +++++++++++--------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/account_avatax_oca/models/avatax_rest_api.py b/account_avatax_oca/models/avatax_rest_api.py index 14781b89f..31c59048c 100644 --- a/account_avatax_oca/models/avatax_rest_api.py +++ b/account_avatax_oca/models/avatax_rest_api.py @@ -203,6 +203,25 @@ def _enrich_result_lines_with_tax_rate(self, avatax_result): ) return avatax_result + def get_addresses(self, origin, destination): + partner_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, + }, + } + return partner_addresses + def get_tax( self, company_code, @@ -262,22 +281,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 +298,9 @@ def get_tax( "type": doc_type, "commit": commit, } + addresses = self.get_addresses(origin, destination) + if addresses: + create_transaction.update({"addresses": addresses}) if is_override and invoice_date: create_transaction.update( { From cbac678eb93e2363889e8702c2547953bf881f18 Mon Sep 17 00:00:00 2001 From: Hardik Suthar Date: Thu, 30 May 2024 16:07:13 +0530 Subject: [PATCH 2/2] [IMP] Improve Code As per Discussion --- account_avatax_oca/models/avatax_rest_api.py | 40 +++++++++----------- account_avatax_oca/models/partner.py | 39 +++++++++++++++++++ 2 files changed, 57 insertions(+), 22 deletions(-) diff --git a/account_avatax_oca/models/avatax_rest_api.py b/account_avatax_oca/models/avatax_rest_api.py index 31c59048c..3a3a07ce1 100644 --- a/account_avatax_oca/models/avatax_rest_api.py +++ b/account_avatax_oca/models/avatax_rest_api.py @@ -203,25 +203,6 @@ def _enrich_result_lines_with_tax_rate(self, avatax_result): ) return avatax_result - def get_addresses(self, origin, destination): - partner_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, - }, - } - return partner_addresses - def get_tax( self, company_code, @@ -298,9 +279,24 @@ def get_tax( "type": doc_type, "commit": commit, } - addresses = self.get_addresses(origin, destination) - if addresses: - create_transaction.update({"addresses": addresses}) + + # 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