def transfer_item(sender, receiver, item, quantity): ''' Transfer an arbitrary quantity of goods between to StoreProvider ''' try: sender_stock = StockItem.by_peer_item(peer=sender, item=item) except StockItem.DoesNotExist: # Store has no such item in stock raise ItemNotInStore # Check if Store has enough items to share if sender_stock.quantity < quantity: raise NotEnoughItemInStock # retrieve or create StockItem for receiver try: receiver_stock = StockItem.by_peer_item(peer=receiver, item=item) except StockItem.DoesNotExist: receiver_stock = StockItem.new_by_peer_item_qty(peer=receiver, item=item, quantity=0) #StockItem(peer=receiver, item=item, quantity=0) receiver_stock.save() log = TransferLog(sender=sender, receiver=receiver, item=item, quantity=quantity, date=datetime.now()) # actual transfer try: sender_stock.quantity -= quantity receiver_stock.quantity += quantity sender_stock.save() receiver_stock.save() log.save() except Exception, e: raise e
def create_stock(input: StockRequest, db: Session = Depends(get_db)): """ Create a new stock and save in the database. """ stock = StockItem() stock.ticker = input.ticker db.add(stock) db.commit() fetch_stock_data(stock.id) return { "code": "success", "message": "stock created" }
def update_table(input: StockRequest, db: Session = Depends(get_db)): """ Replace existing stocks data with the latest data from yfinance """ engine.execute('DELETE FROM Stocks') # delete all data from table for tick in eval(input.ticker): stock = StockItem() stock.ticker = tick db.add(stock) db.commit() fetch_stock_data(stock.id) return { "code": "success", "message": "stock table updated" }
def add_stock_for_item(receiver, item, quantity): ''' Add to stock quantity for a pharmacist ''' # retrieve or create StockItem for receiver # need to make it smarter to check to make sure sku item exists try: receiver_stock = StockItem.by_peer_item(peer=receiver, item=item) except StockItem.DoesNotExist: receiver_stock = StockItem.new_by_peer_item_qty(peer=receiver, item=item, quantity=0) receiver_stock.save() log = TransferLog(sender=receiver, receiver=receiver, item=item, quantity=quantity, date=datetime.now()) # actual transfer try: receiver_stock.quantity += quantity receiver_stock.save() log.save() except Exception, e: raise e