Exemple #1
0
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"
    }
Exemple #4
0
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