Improve the sales import

This commit is contained in:
Urtzi Alfaro
2025-10-15 21:09:42 +02:00
parent 8f9e9a7edc
commit dbb48d8e2c
21 changed files with 992 additions and 409 deletions

View File

@@ -265,18 +265,60 @@ class SalesRepository(BaseRepository[SalesData, SalesDataCreate, SalesDataUpdate
record = await self.get_by_id(record_id)
if not record:
raise ValueError(f"Sales record {record_id} not found")
update_data = {
'is_validated': True,
'validation_notes': validation_notes
}
updated_record = await self.update(record_id, update_data)
logger.info("Validated sales record", record_id=record_id)
return updated_record
except Exception as e:
logger.error("Failed to validate sales record", error=str(e), record_id=record_id)
raise
async def create_sales_records_bulk(
self,
sales_data_list: List[SalesDataCreate],
tenant_id: UUID
) -> int:
"""Bulk insert sales records for performance optimization"""
try:
from uuid import uuid4
records = []
for sales_data in sales_data_list:
is_weekend = sales_data.date.weekday() >= 5 if sales_data.date else False
record = SalesData(
id=uuid4(),
tenant_id=tenant_id,
date=sales_data.date,
inventory_product_id=sales_data.inventory_product_id,
quantity_sold=sales_data.quantity_sold,
unit_price=sales_data.unit_price,
revenue=sales_data.revenue,
location_id=sales_data.location_id,
sales_channel=sales_data.sales_channel,
source=sales_data.source,
is_weekend=is_weekend,
is_validated=getattr(sales_data, 'is_validated', False)
)
records.append(record)
self.session.add_all(records)
await self.session.flush()
logger.info(
"Bulk created sales records",
count=len(records),
tenant_id=tenant_id
)
return len(records)
except Exception as e:
logger.error("Failed to bulk create sales records", error=str(e), tenant_id=tenant_id)
raise