migrator functions updated
This commit is contained in:
@@ -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,
|
||||
# }
|
||||
|
||||
|
||||
@@ -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.")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user