fix(bill delay):fix create record
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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()})
|
||||||
|
|||||||
Reference in New Issue
Block a user