migrator functions updated

This commit is contained in:
2024-11-11 22:23:07 +03:00
parent f6135ced5f
commit ffb85a62f6
56 changed files with 567 additions and 485 deletions

View File

@@ -63,12 +63,19 @@ class RelationshipDutyCompany(CrudCollection):
from databases import (
Duties,
)
token_duties_id, token_company_id = token.get("duty_id"), token.get(
"company_id"
)
send_duties, list_match_company_id = Duties.find_one(uu_id=data.duty_uu_id), []
send_user_duties = Duties.find_one(
duties_id=send_duties.id, company_id=token_duties_id
list_match_company_id = []
send_duties = Duties.filter_one(
Duties.uu_id==data.duty_uu_id,
*Duties.valid_record_args(Duties),
)
send_user_duties = Duties.filter_one(
Duties.duties_id==send_duties.id,
Duties.company_id==token_duties_id,
*Duties.valid_record_args(Duties),
)
if not send_user_duties:
raise Exception(
@@ -76,11 +83,15 @@ class RelationshipDutyCompany(CrudCollection):
)
for company_uu_id in list(data.match_company_uu_id):
company = Companies.find_one(uu_id=company_uu_id)
bulk_company = RelationshipDutyCompany.find_one(
owner_id=token_company_id,
relationship_type="Bulk",
member_id=company.id,
company = Companies.filter_one(
Companies.uu_id==company_uu_id,
*Companies.valid_record_args(Companies),
)
bulk_company = RelationshipDutyCompany.filter_one(
RelationshipDutyCompany.owner_id==token_company_id,
RelationshipDutyCompany.relationship_type=="Bulk",
RelationshipDutyCompany.member_id==company.id,
*RelationshipDutyCompany.valid_record_args(RelationshipDutyCompany),
)
if not bulk_company:
raise Exception(
@@ -104,12 +115,19 @@ class RelationshipDutyCompany(CrudCollection):
from databases import (
Duties,
)
token_duties_id, token_company_id = token.get("duty_id"), token.get(
"company_id"
)
send_duties, list_match_company_id = Duties.find_one(uu_id=data.duty_uu_id), []
send_user_duties = Duties.find_one(
duties_id=send_duties.id, company_id=token_duties_id
list_match_company_id = []
send_duties = Duties.filter_one(
Duties.uu_id==data.duty_uu_id,
*Duties.valid_record_args(Duties),
)
send_user_duties = Duties.filter_one(
Duties.duties_id==send_duties.id,
Duties.company_id==token_duties_id,
*Duties.valid_record_args(Duties),
)
if not send_user_duties:
raise Exception(
@@ -117,11 +135,15 @@ class RelationshipDutyCompany(CrudCollection):
)
for company_uu_id in list(data.match_company_uu_id):
company = Companies.find_one(uu_id=company_uu_id)
bulk_company = RelationshipDutyCompany.find_one(
owner_id=token_company_id,
relationship_type="Bulk",
member_id=company.id,
company = Companies.filter_one(
Companies.uu_id==company_uu_id,
*Companies.valid_record_args(Companies),
)
bulk_company = RelationshipDutyCompany.filter_one(
RelationshipDutyCompany.owner_id==token_company_id,
RelationshipDutyCompany.relationship_type=="Bulk",
RelationshipDutyCompany.member_id==company.id,
*RelationshipDutyCompany.valid_record_args(RelationshipDutyCompany),
)
if not bulk_company:
raise Exception(
@@ -194,7 +216,9 @@ class Companies(CrudCollection, SelectAction):
parent_id = mapped_column(Integer, nullable=True)
workplace_no: Mapped[str] = mapped_column(String, nullable=True)
official_address_id: Mapped[int] = mapped_column(ForeignKey("addresses.id"), nullable=True)
official_address_id: Mapped[int] = mapped_column(
ForeignKey("addresses.id"), nullable=True
)
official_address_uu_id: Mapped[str] = mapped_column(
String, nullable=True, comment="Official Address UUID"
)
@@ -222,57 +246,45 @@ class Companies(CrudCollection, SelectAction):
from databases import Addresses, Duties
data_dict = data.model_dump()
if cls.filter_one(cls.tax_no == str(data.tax_no).strip()):
raise Exception(
"Company already exists. Please ask supervisor to make company visible for your duty."
if cls.filter_one(cls.tax_no == str(data.tax_no).strip(), system=True).data:
raise HTTPException(
status_code=400,
detail="Company already exists. Please ask supervisor to make company visible for your duty."
)
official_address = Addresses.filter_one(
Addresses.uu_id == data.official_address_uu_id
)
if not official_address:
raise HTTPException(
status_code=400,
detail="Official address is not found. Please check address uuid and try again.",
)
Addresses.uu_id == data.official_address_uu_id,
*Addresses.valid_record_args(Addresses),
).data
# if not official_address:
# raise HTTPException(
# status_code=400,
# detail="Official address is not found. Please check address uuid and try again.",
# )
bulk_duties = Duties.get_bulk_duties_of_a_company(
company_id=token.selected_company.company_id
)
if official_address:
data_dict["official_address_id"] = official_address.id
data_dict["official_address_uu_id"] = str(official_address.uu_id)
data_dict["parent_id"] = token.selected_company.company_id
data_dict["official_address_id"] = official_address.id
data_dict["official_address_uu_id"] = str(official_address.uu_id)
data_dict["top_responsible_company_id"] = token.selected_company.company_id
data_dict["top_responsible_company_uu_id"] = (
token.selected_company.company_uu_id
)
company_created = cls.find_or_create(**data_dict)
if not company_created.is_found:
RelationshipDutyCompany.find_or_create(
owner_id=token.selected_company.company_id,
duties_id=bulk_duties.id,
member_id=company_created.id,
parent_id=company_created.parent_id,
relationship_type="Bulk",
show_only=False,
)
if (
not str(token.get("priority_code")) == "78"
): # Company based configuration will be applied
user_duties = Duties.find_one(
duties_id=token.selected_company.duty_id,
company_id=token.selected_company.company_id,
)
RelationshipDutyCompany.find_or_create(
owner_id=token.selected_company.company_id,
duties_id=user_duties.id,
member_id=company_created.id,
parent_id=company_created.parent_id,
relationship_type="Commercial",
show_only=False,
)
RelationshipDutyCompany.find_or_create(
owner_id=token.selected_company.company_id,
duties_id=bulk_duties.id,
member_id=company_created.id,
parent_id=company_created.parent_id,
child_count=0,
relationship_type="Bulk",
show_only=False,
)
return company_created
@classmethod
@@ -280,11 +292,15 @@ class Companies(CrudCollection, SelectAction):
from databases import (
Addresses,
)
data_dict = data.excluded_dump()
duty_id = token.get("duty_id")
company_id = token.get("company_id")
if data.official_address_uu_id:
official_address = Addresses.find_one(uu_id=data.official_address_uu_id)
official_address = Addresses.filter_one(
Addresses.uu_id==data.official_address_uu_id,
*Addresses.valid_record_args(Addresses),
).data
data_dict["official_address_id"] = official_address.id
del data_dict["official_address_uu_id"], data_dict["company_uu_id"]
company_to_update = cls.select_action(
@@ -558,4 +574,3 @@ class Companies(CrudCollection, SelectAction):
# "default_money_type": self.default_money_type,
# "official_address_id": self.official_address_id,
# }

View File

@@ -178,12 +178,12 @@ class Duties(CrudCollection):
list_of_created.append(duties_created_at)
return list_of_created
@classmethod
def get_bulk_duties_of_a_company(cls, company_id):
if bulk_duties := Duties.find_one(
duties_id=Duty.find_one(duty_code="BULK").id, company_id=company_id
):
duties_id = Duty.filter_by_one(system=True, duty_code="BULK").data
if bulk_duties := Duties.filter_by_one(
duties_id=getattr(duties_id,'id', None), company_id=company_id, **Duties.valid_record_dict
).data:
return bulk_duties
raise Exception("Bulk Duty not found. Please contact with supervisor.")