# This file was generated by liblab | https://liblab.com/

from __future__ import annotations
from .utils.json_map import JsonMap
from .base import BaseModel
from .breakdown_costs_quote import BreakdownCostsQuote


@JsonMap({})
class EorQuoteBase(BaseModel):
    """EOR quote approved by Deel

    :param annual_salary: Annual Salary in local currency, defaults to None
    :type annual_salary: float, optional
    :param currency: currency, defaults to None
    :type currency: str, optional
    :param breakdown_costs: breakdown_costs, defaults to None
    :type breakdown_costs: BreakdownCostsQuote, optional
    :param severance_accrual_total: Total severance accrual in local currency, defaults to None
    :type severance_accrual_total: float, optional
    :param severance_accrual_total_usd: Total severance accrual in USD, defaults to None
    :type severance_accrual_total_usd: float, optional
    :param recurring_allowance_total: Total recurring allowance in local currency, defaults to None
    :type recurring_allowance_total: float, optional
    :param recurring_allowance_total_usd: Total recurring allowance in USD, defaults to None
    :type recurring_allowance_total_usd: float, optional
    :param salary_total: Total salary in local currency, defaults to None
    :type salary_total: float, optional
    :param salary_total_usd: Total salary in USD, defaults to None
    :type salary_total_usd: float, optional
    :param employer_cost_total: Total employer cost in local currency, defaults to None
    :type employer_cost_total: float, optional
    :param employer_cost_total_usd: Total employer cost in USD, defaults to None
    :type employer_cost_total_usd: float, optional
    :param platform_fee_total: Total platform fee in local currency, defaults to None
    :type platform_fee_total: float, optional
    :param platform_fee_total_usd: Total platform fee in USD, defaults to None
    :type platform_fee_total_usd: float, optional
    :param mobility_fee_total: Total mobility fee in local currency, defaults to None
    :type mobility_fee_total: float, optional
    :param mobility_fee_total_usd: Total mobility fee in USD, defaults to None
    :type mobility_fee_total_usd: float, optional
    :param monthly_cost_total: Total monthly cost in local currency, defaults to None
    :type monthly_cost_total: float, optional
    :param monthly_cost_total_usd: Total monthly cost in USD, defaults to None
    :type monthly_cost_total_usd: float, optional
    :param gross_salary_total: Total gross salary in local currency, defaults to None
    :type gross_salary_total: float, optional
    :param gross_salary_total_usd: Total gross salary in USD, defaults to None
    :type gross_salary_total_usd: float, optional
    :param cba_total: Total CBA in local currency, defaults to None
    :type cba_total: float, optional
    :param cba_total_usd: Total CBA in USD, defaults to None
    :type cba_total_usd: float, optional
    :param created_at: Short date in format ISO-8601 (YYYY-MM-DD). For example 2022-12-31., defaults to None
    :type created_at: str, optional
    :param updated_at: Short date in format ISO-8601 (YYYY-MM-DD). For example 2022-12-31., defaults to None
    :type updated_at: str, optional
    """

    def __init__(
        self,
        annual_salary: float = None,
        currency: str = None,
        breakdown_costs: BreakdownCostsQuote = None,
        severance_accrual_total: float = None,
        severance_accrual_total_usd: float = None,
        recurring_allowance_total: float = None,
        recurring_allowance_total_usd: float = None,
        salary_total: float = None,
        salary_total_usd: float = None,
        employer_cost_total: float = None,
        employer_cost_total_usd: float = None,
        platform_fee_total: float = None,
        platform_fee_total_usd: float = None,
        mobility_fee_total: float = None,
        mobility_fee_total_usd: float = None,
        monthly_cost_total: float = None,
        monthly_cost_total_usd: float = None,
        gross_salary_total: float = None,
        gross_salary_total_usd: float = None,
        cba_total: float = None,
        cba_total_usd: float = None,
        created_at: str = None,
        updated_at: str = None,
    ):
        if annual_salary is not None:
            self.annual_salary = annual_salary
        if currency is not None:
            self.currency = self._pattern_matching(currency, "^[A-Z]{3}$", "currency")
        if breakdown_costs is not None:
            self.breakdown_costs = self._define_object(
                breakdown_costs, BreakdownCostsQuote
            )
        if severance_accrual_total is not None:
            self.severance_accrual_total = severance_accrual_total
        if severance_accrual_total_usd is not None:
            self.severance_accrual_total_usd = severance_accrual_total_usd
        if recurring_allowance_total is not None:
            self.recurring_allowance_total = recurring_allowance_total
        if recurring_allowance_total_usd is not None:
            self.recurring_allowance_total_usd = recurring_allowance_total_usd
        if salary_total is not None:
            self.salary_total = salary_total
        if salary_total_usd is not None:
            self.salary_total_usd = salary_total_usd
        if employer_cost_total is not None:
            self.employer_cost_total = employer_cost_total
        if employer_cost_total_usd is not None:
            self.employer_cost_total_usd = employer_cost_total_usd
        if platform_fee_total is not None:
            self.platform_fee_total = platform_fee_total
        if platform_fee_total_usd is not None:
            self.platform_fee_total_usd = platform_fee_total_usd
        if mobility_fee_total is not None:
            self.mobility_fee_total = mobility_fee_total
        if mobility_fee_total_usd is not None:
            self.mobility_fee_total_usd = mobility_fee_total_usd
        if monthly_cost_total is not None:
            self.monthly_cost_total = monthly_cost_total
        if monthly_cost_total_usd is not None:
            self.monthly_cost_total_usd = monthly_cost_total_usd
        if gross_salary_total is not None:
            self.gross_salary_total = gross_salary_total
        if gross_salary_total_usd is not None:
            self.gross_salary_total_usd = gross_salary_total_usd
        if cba_total is not None:
            self.cba_total = cba_total
        if cba_total_usd is not None:
            self.cba_total_usd = cba_total_usd
        if created_at is not None:
            self.created_at = self._pattern_matching(
                created_at, "^\d{4}-\d{2}-\d{2}$", "created_at"
            )
        if updated_at is not None:
            self.updated_at = self._pattern_matching(
                updated_at, "^\d{4}-\d{2}-\d{2}$", "updated_at"
            )
