Rev 5720 | Rev 6389 | 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 metadata, setup_allfrom elixir.entity import Entityfrom elixir.fields import Fieldfrom elixir.options import using_options, using_table_optionsfrom elixir.relationships import ManyToOne, OneToManyfrom sqlalchemy.engine import create_enginefrom sqlalchemy.types import Integer, String, Float, DateTime, Boolean, Enum, Numeric#===============================================================================# Different entities in the model#===============================================================================def initialize(dbname='transaction', db_hostname="localhost", echoOn=True):#metadata.bind = "sqlite:///Transactionsnew.sqlite"#metadata.bind = 'mysql://root:shop2020@localhost/transaction'engine = create_engine('mysql://root:shop2020@' + db_hostname + '/' + dbname, pool_recycle=7200)metadata.bind = enginemetadata.bind.echo = echoOnsetup_all(True)if __name__=="__main__":initialize()class InvoiceIDGenerator(Entity):id = Field(Integer)orderType = Field(Integer, primary_key = True)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class RechargeVoucherTracker(Entity):order = ManyToOne("Order")voucherType = Field(Integer)amount = Field(Integer)voucherIssued = Field(Boolean)voucherCode = Field(String(30))issuedOn = Field(DateTime)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")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)item_number = Field(String(50))serial_number = Field(String(50))dealText = Field(String(100))warranty_expiry_timestamp = Field(DateTime)order = ManyToOne("Order")vatRate = Field(Float)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)promised_delivery_time = Field(DateTime)expected_shipping_time = Field(DateTime)promised_shipping_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))batchNo = Field(Integer)serialNo = Field(Integer)doaFlag = Field(Boolean)pickupRequestNo = Field(String(20))doa_auth_timestamp = Field(DateTime)doa_pickup_timestamp = Field(DateTime)received_return_timestamp = Field(DateTime)reship_timestamp = Field(DateTime)refund_timestamp = Field(DateTime)new_order_id = Field(Integer)purchase_order_id = Field(Integer)cod = Field(Boolean)refunded_by = Field(String(30))refund_reason = Field(String(256))verification_timestamp = Field(DateTime)delay_reason = Field(Enum('INVENTORY_LOW_PHASED_OUT', 'INVENTORY_LOW_COLOR_NOT_AVAILABLE',\'INVENTORY_LOW_REVERSAL_NOT_ON_TIME', 'INVENTORY_LOW_PRODUCT_NOT_SEALED',\'COURIER_DELAY_NOT_DELIVERED_TO_COURIER_ON_TIME', 'COURIER_DELAY_DID_NOT_CONNECT',\'COURIER_DELAY_CUSTOMER_NOT_AVAILABLE', 'COURIER_DELAY_INCORRECT_ADDRESS',\'COURIER_DELAY_OCTROI_DELAY', 'COURIER_DELAY_FORCES_OF_NATURE',\'COD_VERIFICATION_DELAY', 'PAYMENT_FLAGGED', 'OTHERS'))cod_reconciliation_timestamp = Field(DateTime)previousStatus = Field(Integer)vendorId = Field(Integer)delayReasonText= Field(String(250))doa_logistics_provider_id = Field(Integer)local_connected_timestamp = Field(DateTime)reached_destination_timestamp = Field(DateTime)first_dlvyatmp_timestamp = Field(DateTime)orderInventory = OneToMany("OrderInventory")vendor_paid = Field(Boolean, default=0, server_default="0")originalOrderId = Field(Integer)fulfilmentWarehouseId = Field(Integer)orderType = Field(Integer)pickupStoreId = Field(Integer, default=0, server_default="0")using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class CodVerificationAgent(Entity):orderId = Field(Integer, primary_key=True, autoincrement=True)verificationAgent = Field(String(200))using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")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)session_source = Field(String(100))session_start_time = Field(DateTime)first_source = Field(String(100))first_source_start_time = Field(DateTime)orders = OneToMany("Order")coupon_code = Field(String(20))using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class Alert(Entity):id = Field(Integer, primary_key=True, autoincrement=True)type = Field(Integer)status = Field(Integer)timestamp = Field(DateTime)description = Field(String(100))warehouseId = Field(Integer)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")class TransactionRequiringExtraProcessing(Entity):transaction_id = Field(Integer, primary_key=True, autoincrement=False)category = Field(Enum('COD_VERIFICATION', 'DELAYED_DELIVERY'), primary_key=True, autoincrement=False)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class OrderInventory(Entity):order = ManyToOne("Order", primary_key=True)itemId = Field(Integer)timestamp = Field(DateTime)hotspotAction = Field(Integer)estimate = Field(Integer)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class EBSSettlementSummary(Entity):settlementId = Field(Integer, primary_key = True)settlementDate = Field(DateTime)transactionDateFrom = Field(DateTime)transactionDateTo = Field(DateTime)amount = Field(Numeric(precision=11, scale=3, asdecimal=False))detailsUploaded = Field(Boolean)using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class PaymentSettlement(Entity):referenceId = Field(Integer) #PaymentID in case of prepaid & Order Id in case of CODoriginalOrderId = Field(Integer) #originalOrderId in case of prepaid is NULL & Order Id of original Order or Order Id in case of CODpaymentGatewayId = Field(Integer)settlementDate = Field(DateTime)serviceTax = Field(Numeric(precision=11, scale=3, asdecimal=False))otherCharges = Field(Numeric(precision=11, scale=3, asdecimal=False))netCollection = Field(Numeric(precision=11, scale=3, asdecimal=False))using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")class Attribute(Entity):orderId = Field(Integer)name = Field(String(100))value = Field(String(100))using_options(shortnames=True)using_table_options(mysql_engine="InnoDB")