def single_action_transactions(self, action, args): products = [] for arg in args: if self.looks_like_prod_code(arg): product = self.product_from_code(arg) if product: products.append(product) else: self.errors.append(InvalidProductCodeException(arg.lower())) else: if not products: continue if len(products) > 1: raise SMSError('missing quantity for product "%s"' % products[-1].code) try: value = int(arg) except: raise SMSError('could not understand product quantity "%s"' % arg) for p in products: yield StockTransactionHelper( domain=self.domain.name, location_id=self.location.location_id, case_id=self.case_id, product_id=p.get_id, action=action.action, subaction=action.subaction, quantity=value, ) products = [] if products: raise SMSError('missing quantity for product "%s"' % products[-1].code)
def single_action_transactions(self, action, args): products = [] for idx, arg in enumerate(args): if self.looks_like_prod_code(arg): product = self.product_from_code(arg) if product: products.append(product) else: if idx == 0: raise ProductCodeException(INVALID_PRODUCT_CODE % arg) self.bad_codes.add(arg) else: if not products: continue if len(products) > 1: raise SMSError('missing quantity for product "%s"' % products[-1].code) # NOTE also custom code here, must be formatted like 11.22 if re.compile("^\d+\.\d+$").match(arg): value = arg else: raise SMSError( 'could not understand product quantity "%s"' % arg) for p in products: # for EWS we have to do two transactions, one being a receipt # and second being a transaction (that's reverse of the order # the user provides them) yield StockTransactionHelper( domain=self.domain.name, location_id=self.location.location_id, case_id=self.case_id, product_id=p.get_id, action=const.StockActions.RECEIPTS, quantity=Decimal(value.split('.')[1])) yield StockTransactionHelper( domain=self.domain.name, location_id=self.location.location_id, case_id=self.case_id, product_id=p.get_id, action=const.StockActions.STOCKONHAND, quantity=Decimal(value.split('.')[0])) products = [] if products: raise SMSError('missing quantity for product "%s"' % products[-1].code)