Changeset - 50db7437f539
[Not reviewed]
0 2 0
Lance Edgar (lance) - 3 years ago 2022-03-29 18:17:42
lance@edbob.org
Let cases and/or units be (dis)allowed for new custorder

at least this sets the stage, probably more tweaks needed to fully
support the idea
2 files changed with 41 insertions and 8 deletions:
0 comments (0 inline, 0 general)
rattail/batch/custorder.py
Show inline comments
 
@@ -98,6 +98,24 @@ class CustomerOrderBatchHandler(BatchHandler):
 
                                   'new_orders.allow_contact_info_create',
 
                                   default=False)
 

	
 
    def allow_case_orders(self):
 
        """
 
        Returns a boolean indicating whether "case" orders are
 
        allowed.
 
        """
 
        return self.config.getbool('rattail.custorders',
 
                                   'allow_case_orders',
 
                                   default=False)
 

	
 
    def allow_unit_orders(self):
 
        """
 
        Returns a boolean indicating whether "unit" orders are
 
        allowed.
 
        """
 
        return self.config.getbool('rattail.custorders',
 
                                   'allow_unit_orders',
 
                                   default=False)
 

	
 
    def allow_unknown_product(self):
 
        """
 
        Returns a boolean indicating whether "unknown" products are
 
@@ -530,11 +548,13 @@ class CustomerOrderBatchHandler(BatchHandler):
 
        choices = []
 

	
 
        # Each
 
        if self.allow_unit_orders():
 
            unit_name = self.enum.UNIT_OF_MEASURE[self.enum.UNIT_OF_MEASURE_EACH]
 
            choices.append({'key': self.enum.UNIT_OF_MEASURE_EACH,
 
                            'value': unit_name})
 

	
 
        # Case
 
        if self.allow_case_orders():
 
            case_text = self.enum.UNIT_OF_MEASURE[self.enum.UNIT_OF_MEASURE_CASE]
 
            if case_text:
 
                choices.append({'key': self.enum.UNIT_OF_MEASURE_CASE,
 
@@ -547,7 +567,14 @@ class CustomerOrderBatchHandler(BatchHandler):
 
        Return a list of UOM choices for the given product.
 
        """
 
        products_handler = self.app.get_products_handler()
 
        return products_handler.get_uom_choices(product)
 
        choices = products_handler.get_uom_choices(product)
 
        if not self.allow_case_orders():
 
            choices = [choice for choice in choices
 
                       if choice['key'] != self.enum.UNIT_OF_MEASURE_CASE]
 
        if not self.allow_unit_orders():
 
            choices = [choice for choice in choices
 
                       if choice['key'] != self.enum.UNIT_OF_MEASURE_EACH]
 
        return choices
 

	
 
    def why_not_add_product(self, product, batch):
 
        """
rattail/products.py
Show inline comments
 
@@ -685,19 +685,25 @@ class ProductsHandler(GenericHandler):
 
        """
 
        choices = []
 

	
 
        # TODO: not sure how generically useful this method even is? i
 
        # think it is only used when making a new custorder so far..
 

	
 
        # TODO: for instance "pound" vs. "each" is really just 2 ways
 
        # of saying "unit" - and does not consider i18n etc.
 

	
 
        # Each
 
        if not product or not product.weighed:
 
            unit_name = self.enum.UNIT_OF_MEASURE[self.enum.UNIT_OF_MEASURE_EACH]
 
            choices.append({'key': self.enum.UNIT_OF_MEASURE_EACH,
 
                            'value': unit_name})
 

	
 
        # Pound
 
        if not product or product.weighed:
 
            unit_name = self.enum.UNIT_OF_MEASURE[self.enum.UNIT_OF_MEASURE_POUND]
 
            choices.append({
 
                'key': self.enum.UNIT_OF_MEASURE_POUND,
 
                'value': unit_name,
 
            })
 
        # # Pound
 
        # if not product or product.weighed:
 
        #     unit_name = self.enum.UNIT_OF_MEASURE[self.enum.UNIT_OF_MEASURE_POUND]
 
        #     choices.append({
 
        #         'key': self.enum.UNIT_OF_MEASURE_POUND,
 
        #         'value': unit_name,
 
        #     })
 

	
 
        # Case
 
        case_text = None
0 comments (0 inline, 0 general)