2025-08-28 17:58:05 -05:00

61 lines
2.4 KiB
Python

import psycopg2
from application.database_postgres.ItemsModel import ItemsModel
from application.database_postgres.ItemInfoModel import ItemInfoModel
from application.database_postgres.LogisticsInfoModel import LogisticsInfoModel
from application.database_postgres.FoodInfoModel import FoodInfoModel
from application.database_postgres.TransactionsModel import TransactionsModel
from application.database_postgres.ItemLocationsModel import ItemLocationsModel
import config
def add_new_item(site: str, data: dict, user_uuid: str, conn=None):
item_data = data.get('item_data')
food_info = data.get('food_data', {})
item_info = data.get('item_info', {})
logistics_info = data.get('logistics_info', {})
self_conn = False
if not conn:
database_config = config.config()
conn = psycopg2.connect(**database_config)
conn.autocommit = False
self_conn = True
item_payload = ItemsModel.Payload(**item_data)
item = ItemsModel.insert_tuple(site, item_payload.payload_dictionary(), conn=conn)
item_info['item_uuid'] = item['item_uuid']
item_info_payload = ItemInfoModel.Payload(**item_info)
item_info = ItemInfoModel.insert_tuple(site, item_info_payload.payload_dictionary(), conn=conn)
logistics_info['item_uuid'] = item['item_uuid']
logistics_info_payload = LogisticsInfoModel.Payload(**logistics_info)
logistics_info = LogisticsInfoModel.insert_tuple(site, logistics_info_payload.payload_dictionary(), conn=conn)
if 'item_primary_location' in logistics_info.keys():
items_location = ItemLocationsModel.Payload(
item_uuid=item['item_uuid'],
location_uuid=logistics_info['item_primary_location']
)
items_location = ItemLocationsModel.insert_tuple(site, items_location.payload_dictionary(), conn=conn)
if item['item_category'] in ['FOOD', 'FOOD PLU']:
food_info['item_uuid'] = item['item_uuid']
food_info_payload = FoodInfoModel.Payload(**food_info)
food_info = FoodInfoModel.insert_tuple(site, food_info_payload.payload_dictionary(), conn=conn)
transaction = TransactionsModel.Payload(
item_uuid=item['item_uuid'],
transaction_created_by=user_uuid,
transaction_name="Item Created",
transaction_type="SYSTEM"
)
transaction = TransactionsModel.insert_tuple(site, transaction.payload_dictionary(), conn=conn)
if self_conn:
conn.commit()
conn.close()