Subversion Repositories SmartDukaan

Rev

Rev 1261 | Rev 1911 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

'''
Created on 29-Mar-2010

@author: ashish
'''

from elixir import *
from elixir.entity import Entity
from elixir.fields import Field
from sqlalchemy.types import Integer
from sqlalchemy import create_engine
from elixir.relationships import OneToMany, ManyToOne
import datetime
import elixir



#===============================================================================
# Different entities in the model
#===============================================================================

def initialize(dbname='transaction'):
    #metadata.bind = "sqlite:///Transactionsnew.sqlite"
    #metadata.bind = 'mysql://root:shop2020@localhost/transaction'
    engine = create_engine('mysql://root:shop2020@localhost/' + dbname, pool_recycle=7200)
    metadata.bind = engine
    metadata.bind.echo = True
    setup_all(True)


if __name__=="__main__":
    initialize()
    
    
class LineItem(Entity):
    id = Field(Integer, primary_key=True, autoincrement=True)
    item_id = Field(Integer)
    productGroup = Field(String(100))
    brand = Field(String(100))
    model_number = Field(String(50))
    model_name = Field(String(50))
    color = Field(String(20))
    extra_info = Field(String(100))
    quantity = Field(Float)
    unit_price = Field(Float)
    unit_weight = Field(Float)
    total_price = Field(Float)
    transfer_price = Field(Float)
    total_weight = Field(Float)
    transfer_price = Field(Float)
    order = ManyToOne("Order")
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
    def __repr__(self):
        return "{0} {1} {2} {3}".format(self.brand or "", self.model_name or "", self.model_number or "", self.color or "")
    
class Order(Entity):
    id = Field(Integer, primary_key=True, autoincrement=True)
    warehouse_id = Field(Integer)
    logistics_provider_id = Field(Integer)
    airwaybill_no = Field(String(50))
    tracking_id = Field(String(50))
    expected_delivery_time = Field(DateTime)
    customer_id = Field(Integer)
    customer_name = Field(String(50))
    customer_mobilenumber = Field(String(20))
    customer_pincode = Field(String(10))
    customer_address1 = Field(String(100))
    customer_address2 = Field(String(100))
    customer_city = Field(String(100))
    customer_state = Field(String(100))
    customer_email = Field(String(50))
    status = Field(Integer)
    statusDescription = Field(String(50))
    total_amount = Field(Float)
    total_weight = Field(Float)
    invoice_number = Field(String(30))
    billed_by = Field(String(30))
    created_timestamp = Field(DateTime)
    accepted_timestamp = Field(DateTime)
    billing_timestamp = Field(DateTime)
    shipping_timestamp = Field(DateTime)
    pickup_timestamp = Field(DateTime)
    delivery_timestamp = Field(DateTime)
    outofstock_timestamp = Field(DateTime)
    lineitems = OneToMany("LineItem")
    transaction = ManyToOne("Transaction")
    jacket_number = Field(Integer)
    receiver = Field(String(50))
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    batchNo = Field(Integer)
    serialNo = Field(Integer)

class Transaction(Entity):
    id = Field(Integer, primary_key=True, autoincrement=True)
    createdOn = Field(DateTime)
    status = Field(Integer)
    status_message = Field(String(100))
    customer_id = Field(Integer)
    shopping_cart_id = Field(Integer)
    orders = OneToMany("Order")
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class Alerts(Entity):
    id = Field(Integer, primary_key=True, autoincrement=True)
    order_id = Field(Integer)
    valid = Field(Boolean)
    type = Field(Integer)
    time_set = Field(DateTime)
    comment = Field(String(100))
    time_unset = Field(DateTime)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")
    
class BatchNoGenerator(Entity):
    id=Field(Integer, primary_key=True)
    using_options(shortnames=True)
    using_table_options(mysql_engine="InnoDB")