Try to be smarter about the "size" column for Catapult export
This commit is contained in:
		
							parent
							
								
									190ba506e5
								
							
						
					
					
						commit
						20e8aa97ca
					
				
					 1 changed files with 19 additions and 6 deletions
				
			
		| 
						 | 
					@ -26,6 +26,7 @@ CORE-POS -> Catapult Inventory Workbook
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import re
 | 
					import re
 | 
				
			||||||
import datetime
 | 
					import datetime
 | 
				
			||||||
 | 
					import decimal
 | 
				
			||||||
import logging
 | 
					import logging
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from sqlalchemy.exc import ProgrammingError
 | 
					from sqlalchemy.exc import ProgrammingError
 | 
				
			||||||
| 
						 | 
					@ -407,13 +408,25 @@ class InventoryItemImporter(FromCore, catapult_importing.model.InventoryItemImpo
 | 
				
			||||||
            if self.exclude_missing_department:
 | 
					            if self.exclude_missing_department:
 | 
				
			||||||
                return
 | 
					                return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        size = "{} {}".format((product.size or '').strip(),
 | 
					        # size may come from one of two fields, or combination thereof
 | 
				
			||||||
                              (product.unit_of_measure or '').strip())
 | 
					        pack_size = (product.size or '').strip()
 | 
				
			||||||
        size = size.strip()
 | 
					        uom = (product.unit_of_measure or '').strip()
 | 
				
			||||||
 | 
					        numeric_pack = False
 | 
				
			||||||
 | 
					        if pack_size:
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
 | 
					                decimal.Decimal(pack_size)
 | 
				
			||||||
 | 
					            except decimal.InvalidOperation:
 | 
				
			||||||
 | 
					                pass
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                numeric_pack = True
 | 
				
			||||||
 | 
					        if numeric_pack:
 | 
				
			||||||
 | 
					            size = "{} {}".format(pack_size, uom).strip()
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            size = pack_size or uom or None
 | 
				
			||||||
        # TODO: this logic may actually be client-specific?  i just happened to
 | 
					        # TODO: this logic may actually be client-specific?  i just happened to
 | 
				
			||||||
        # find some of these chars in a client DB and needed to avoid them, b/c
 | 
					        # find some null chars in a client DB and needed to avoid them, b/c the
 | 
				
			||||||
        # the openpyxl lib said IllegalCharacterError
 | 
					        # openpyxl lib said IllegalCharacterError
 | 
				
			||||||
        if '\x00' in size:
 | 
					        if size is not None and '\x00' in size:
 | 
				
			||||||
            logger = log.warning if self.warn_size_null_byte else log.debug
 | 
					            logger = log.warning if self.warn_size_null_byte else log.debug
 | 
				
			||||||
            logger("product %s has null byte in size field: %s",
 | 
					            logger("product %s has null byte in size field: %s",
 | 
				
			||||||
                   product.upc, product)
 | 
					                   product.upc, product)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue