""" Contract History Model. Model for tracking changes of product and track splits. """ import datetime from sqlalchemy import Column, DateTime, Integer, String from contracts.connectors import mysql class VendorContractChangeHistory(mysql.BaseModel): """VendorContractChangeHistory class.""" __tablename__ = 'vendor_contract_change_history' history_id = Column(Integer, primary_key=True) contract_id = Column(Integer) orchadmin_user_id = Column(Integer) date_changed = Column(DateTime) change_detail = Column(String) def set_product_change_history( history_message, upc, contract_id, oa_user, product_split_rate=None ): """Create a new record in vendor contract change history. Args: history_message (string): message to store upc (int): upc contract_id(int): vendor contract id oa_user(int): an oa user that added a split product_split_rate (string): product split rate Returns: VendorContractChangeHistory: an object of vendor contract history table """ vendor_history = VendorContractChangeHistory( contract_id=contract_id, orchadmin_user_id=oa_user, date_changed=datetime.datetime.now(), change_detail=history_message.format(upc=upc, product_split=product_split_rate), ) return vendor_history def set_track_change_history( history_message, vendor_id, isrc, contract_id, oa_user, track_split_rate=None, old_track_split=None, ): """Create a new record in vendor contract change history. Args: history_message (string): message to store vendor_id(int): vendor_id isrc(varchar): isrc contract_id(int): vendor contract id oa_user(int): an oa user that added a split track_split_rate (string): track split rate Returns: VendorContractChangeHistory: an object of vendor contract history table """ vendor_history = VendorContractChangeHistory( contract_id=contract_id, orchadmin_user_id=oa_user, date_changed=datetime.datetime.now(), change_detail=history_message.format( isrc=isrc, vendor_id=vendor_id, track_split=track_split_rate, old_track_split=old_track_split, ), ) return vendor_history def set_product_territory_change_history( history_message, upc, country_id, contract_id, oa_user, country_name, split_rate=None, old_split_rate=None, ): """Create a new record in vendor contract change history. Args: history_message (string): message to store country_id(int): country_id upc(int): unique product code contract_id(int): vendor contract id oa_user(int): an oa user that added a split split_rate (string): product territory split rate old_split_rate (string): old product territory split rate country_name (string): Country name Returns: VendorContractChangeHistory: an object of vendor contract history table """ vendor_history = VendorContractChangeHistory( contract_id=contract_id, orchadmin_user_id=oa_user, date_changed=datetime.datetime.now(), change_detail=history_message.format( upc=upc, country_name=country_name, split_rate=split_rate, old_split_rate=old_split_rate, ), ) return vendor_history