fix: define common base schema for Product model
This commit is contained in:
		
							parent
							
								
									2fe089bd57
								
							
						
					
					
						commit
						a2a1d7faee
					
				
					 3 changed files with 109 additions and 223 deletions
				
			
		|  | @ -536,7 +536,7 @@ class Origin(Base): | |||
|         return self.name or self.short_name or "" | ||||
| 
 | ||||
| 
 | ||||
| class Product(Base): | ||||
| class Product(common.ProductBase, Base): | ||||
|     """ | ||||
|     Represents a product, purchased and/or sold by the organization. | ||||
|     """ | ||||
|  | @ -547,120 +547,37 @@ class Product(Base): | |||
|         sa.ForeignKeyConstraint(['tax'], ['taxrates.id']), | ||||
|     ) | ||||
| 
 | ||||
|     id = sa.Column(sa.Integer(), primary_key=True, autoincrement=True, nullable=False) | ||||
| 
 | ||||
|     upc = sa.Column(sa.String(length=13), nullable=True) | ||||
| 
 | ||||
|     description = sa.Column(sa.String(length=30), nullable=True) | ||||
| 
 | ||||
|     brand = sa.Column(sa.String(length=30), nullable=True) | ||||
| 
 | ||||
|     formatted_name = sa.Column(sa.String(length=30), nullable=True) | ||||
| 
 | ||||
|     normal_price = sa.Column(sa.Float(), nullable=True) | ||||
| 
 | ||||
|     price_method = sa.Column('pricemethod', sa.SmallInteger(), nullable=True) | ||||
| 
 | ||||
|     group_price = sa.Column('groupprice', sa.Float(), nullable=True) | ||||
| 
 | ||||
|     quantity = sa.Column(sa.SmallInteger(), nullable=True) | ||||
| 
 | ||||
|     special_price = sa.Column(sa.Float(), nullable=True) | ||||
| 
 | ||||
|     special_price_method = sa.Column('specialpricemethod', sa.SmallInteger(), nullable=True) | ||||
| 
 | ||||
|     special_group_price = sa.Column('specialgroupprice', sa.Float(), nullable=True) | ||||
| 
 | ||||
|     special_quantity = sa.Column('specialquantity', sa.SmallInteger(), nullable=True) | ||||
| 
 | ||||
|     start_date = sa.Column(sa.DateTime(), nullable=True) | ||||
| 
 | ||||
|     end_date = sa.Column(sa.DateTime(), nullable=True) | ||||
| 
 | ||||
|     department_number = sa.Column('department', sa.SmallInteger(), nullable=True) | ||||
|     department = orm.relationship( | ||||
|         Department, | ||||
|         primaryjoin=Department.number == department_number, | ||||
|         foreign_keys=[department_number], | ||||
|         primaryjoin='Department.number == Product.department_number', | ||||
|         foreign_keys='Product.department_number', | ||||
|         doc=""" | ||||
|         Reference to the :class:`Department` to which the product belongs. | ||||
|         """) | ||||
| 
 | ||||
|     size = sa.Column(sa.String(length=9), nullable=True) | ||||
| 
 | ||||
|     tax_rate_id = sa.Column('tax', sa.SmallInteger(), nullable=True) | ||||
|     tax_rate = orm.relationship(TaxRate) | ||||
| 
 | ||||
|     foodstamp = sa.Column(sa.Boolean(), nullable=True) | ||||
| 
 | ||||
|     scale = sa.Column(sa.Boolean(), nullable=True) | ||||
| 
 | ||||
|     # TODO: yikes, did i just code this all wrong the first time?  pretty sure | ||||
|     # this needs to change to a decimal column... | ||||
|     scale_price = sa.Column('scaleprice', sa.Boolean(), nullable=True) | ||||
|     # scale_price = sa.Column('scaleprice', sa.Numeric(precision=10, scale=2), nullable=True) | ||||
| 
 | ||||
|     mix_match_code = sa.Column('mixmatchcode', sa.String(length=13), nullable=True) | ||||
| 
 | ||||
|     created = sa.Column(StringableDateTime(), nullable=True) | ||||
| 
 | ||||
|     modified = sa.Column(sa.DateTime(), nullable=True) | ||||
| 
 | ||||
|     # advertised = sa.Column(sa.Boolean(), nullable=True) | ||||
| 
 | ||||
|     tare_weight = sa.Column('tareweight', sa.Float(), nullable=True) | ||||
| 
 | ||||
|     discount = sa.Column(sa.SmallInteger(), nullable=True) | ||||
| 
 | ||||
|     discount_type = sa.Column('discounttype', sa.SmallInteger(), nullable=True) | ||||
| 
 | ||||
|     line_item_discountable = sa.Column(sa.Boolean(), nullable=True) | ||||
| 
 | ||||
|     unit_of_measure = sa.Column('unitofmeasure', sa.String(length=15), nullable=True) | ||||
| 
 | ||||
|     wicable = sa.Column(sa.SmallInteger(), nullable=True) | ||||
| 
 | ||||
|     quantity_enforced = sa.Column('qttyEnforced', sa.Boolean(), nullable=True) | ||||
| 
 | ||||
|     id_enforced = sa.Column('idEnforced', sa.SmallInteger(), nullable=True) | ||||
| 
 | ||||
|     cost = sa.Column(sa.Float(), nullable=True) | ||||
| 
 | ||||
|     in_use = sa.Column('inUse', sa.Boolean(), nullable=True) | ||||
| 
 | ||||
|     flags = sa.Column('numflag', sa.Integer(), nullable=True) | ||||
| 
 | ||||
|     subdepartment_number = sa.Column('subdept', sa.SmallInteger(), nullable=True) | ||||
|     subdepartment = orm.relationship( | ||||
|         Subdepartment, | ||||
|         primaryjoin=Subdepartment.number == subdepartment_number, | ||||
|         foreign_keys=[subdepartment_number], | ||||
|         primaryjoin='Subdepartment.number == Product.subdepartment_number', | ||||
|         foreign_keys='Product.subdepartment_number', | ||||
|         doc=""" | ||||
|         Reference to the :class:`Subdepartment` to which the product belongs. | ||||
|         """) | ||||
| 
 | ||||
|     deposit = sa.Column(sa.Float(), nullable=True) | ||||
| 
 | ||||
|     local = sa.Column(sa.Integer(), nullable=True) | ||||
| 
 | ||||
|     store_id = sa.Column(sa.SmallInteger(), nullable=True) | ||||
| 
 | ||||
|     default_vendor_id = sa.Column(sa.Integer(), nullable=True) | ||||
|     default_vendor = orm.relationship( | ||||
|         Vendor, | ||||
|         primaryjoin=Vendor.id == default_vendor_id, | ||||
|         foreign_keys=[default_vendor_id], | ||||
|         primaryjoin='Vendor.id == Product.default_vendor_id', | ||||
|         foreign_keys='Product.default_vendor_id', | ||||
|         doc=""" | ||||
|         Reference to the default :class:`Vendor` from which the product is obtained. | ||||
|         """) | ||||
| 
 | ||||
|     # TODO: deprecate / remove this? | ||||
|     vendor = orm.synonym('default_vendor') | ||||
| 
 | ||||
|     current_origin_id = sa.Column(sa.Integer(), nullable=True) | ||||
| 
 | ||||
|     # TODO: some older DB's might not have this?  guess we'll see | ||||
|     last_sold = sa.Column(sa.DateTime(), nullable=True) | ||||
| 
 | ||||
|     like_code = association_proxy( | ||||
|         '_like_code', 'like_code', | ||||
|         creator=lambda lc: ProductLikeCode(like_code=lc), | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue