fix(bill delay):fix create record

This commit is contained in:
shahzeydyfah
2026-01-02 18:48:31 +03:30
parent 0b1e72ab88
commit 727986b489
2 changed files with 16 additions and 5 deletions
+3
View File
@@ -67,8 +67,11 @@ class BillDelayRepository(BaseRepository):
delay = await super().create(coding) delay = await super().create(coding)
project = await use_collection(TaskEnv.CLN_PROJECT).find_one({"_id": coding.project_id}) project = await use_collection(TaskEnv.CLN_PROJECT).find_one({"_id": coding.project_id})
project_model = ProjectModel(**project) project_model = ProjectModel(**project)
if 'date_delay' in project:
date_delay = project_model.date_delay + datetime.timedelta(days=coding.total_day) date_delay = project_model.date_delay + datetime.timedelta(days=coding.total_day)
await use_collection(TaskEnv.CLN_PROJECT).update_one({"_id": coding.project_id}, {"$inc": {"all_delay_day":coding.total_day},"$set":{"date_delay":date_delay}}) await use_collection(TaskEnv.CLN_PROJECT).update_one({"_id": coding.project_id}, {"$inc": {"all_delay_day":coding.total_day},"$set":{"date_delay":date_delay}})
else:
await use_collection(TaskEnv.CLN_PROJECT).update_one({"_id": coding.project_id}, {"$inc": {"all_delay_day":coding.total_day}})
return delay return delay
async def update(self, _id: UUID, update: BillDelayModel): async def update(self, _id: UUID, update: BillDelayModel):
old = await self.get(_id) old = await self.get(_id)
+11 -3
View File
@@ -91,8 +91,8 @@ class ProjectRepository(BaseRepository[ProjectModel]):
return await self.get(coding.id) return await self.get(coding.id)
async def update(self, _id: UUID, update: ProjectModel): async def update(self, _id: UUID, update: ProjectModel):
old_project = await use_collection(COLLECTION).find_one({"_id": _id}) old_project_dict = await use_collection(COLLECTION).find_one({"_id": _id})
old_project = ProjectModel(**old_project) old_project = ProjectModel(**old_project_dict)
if update.monitor and not old_project.monitor: if update.monitor and not old_project.monitor:
code = self.create_code(update) code = self.create_code(update)
update.monitor.code = 'S' + code update.monitor.code = 'S' + code
@@ -104,7 +104,15 @@ class ProjectRepository(BaseRepository[ProjectModel]):
if update.monitor: if update.monitor:
update.has_monitor = True update.has_monitor = True
await self.update_report_price(update) await self.update_report_price(update)
if old_project.monitor and old_project.monitor.detail and update.monitor and update.monitor.detail and (update.monitor.detail.date_create_project != old_project.monitor.detail.date_create_project or update.monitor.detail.first_time != old_project.monitor.detail.first_time): old_detail = old_project_dict.get("monitor", {}).get("detail", {})
old_date = old_detail.get("date_create_project")
old_first_time = old_detail.get("first_time")
update_dict = update.mongo_dict()
new_detail = update_dict.get("monitor", {}).get("detail", {})
new_date = new_detail.get("date_create_project")
new_first_time = new_detail.get("first_time")
can_calculate = (new_date is not None and new_first_time is not None)
if can_calculate and ((old_date is None or new_date != old_date)or(old_first_time is None or new_first_time != old_first_time)):
update.date_delay = self.creat_date_delay(update) + datetime.timedelta(days=update.all_delay_day) update.date_delay = self.creat_date_delay(update) + datetime.timedelta(days=update.all_delay_day)
update.u_at() update.u_at()
await use_collection(COLLECTION).update_one({"_id": _id}, {"$set": update.mongo_dict()}) await use_collection(COLLECTION).update_one({"_id": _id}, {"$set": update.mongo_dict()})