diff --git a/rattail/batch/vendorinvoice.py b/rattail/batch/vendorinvoice.py index 04b27ee7..d91f4f40 100644 --- a/rattail/batch/vendorinvoice.py +++ b/rattail/batch/vendorinvoice.py @@ -108,29 +108,29 @@ class VendorInvoiceHandler(BatchHandler): """ Attempt to locate the product for the row, based on UPC etc. """ + session = orm.object_session(row) + + if row.upc: + product = self.find_product_by_upc(session, row.upc) + if product: + return product + + if row.vendor_code: + product = self.find_product_by_vendor_code(session, row.vendor_code) + if product: + return product + + def find_product_by_upc(self, session, upc): if hasattr(self, 'products'): + return self.products['upc'].get(upc) + else: + return api.get_product_by_upc(session, upc) - if row.upc: - product = self.products['upc'].get(row.upc) - if product: - return product - - if row.vendor_code: - product = self.products['vendor_code'].get(row.vendor_code) - if product: - return product - - else: # no cache, must query - - session = orm.object_session(row) - - if row.upc: - product = api.get_product_by_upc(session, row.upc) - if product: - return product - - if row.vendor_code: - product = api.get_product_by_vendor_code(session, row.vendor_code, self.vendor) + def find_product_by_vendor_code(self, session, code): + if hasattr(self, 'products'): + return self.products['vendor_code'].get(code) + else: + return api.get_product_by_upc(session, code, self.vendor) def refresh_row(self, row): """