from ..cw_model import CWModel


class Agreement(CWModel):

    def __init__(self, json_dict=None):
        self.id = None  # (Integer)
        self.name = None  # *(String(100))
        self.type = None  # *(AgreementTypeReference)
        self.company = None  # *(CompanyReference)
        self.contact = None  # *(ContactReference)
        self.subContractCompany = None  # (CompanyReference)
        self.subContractContact = None  # (ContactReference)
        self.parentAgreementId = None  # (Integer)
        self.customerPO = None  # (String(50))
        self.locationId = None  # (Integer)
        self.businessUnitId = None  # (Integer)
        self.restrictLocationFlag = None  # (Boolean)
        self.restrictDepartmentFlag = None  # (Boolean)
        self.startDate = None  # (String)
        self.endDate = None  # (String)
        self.noEndingDateFlag = None  # (Boolean)
        self.opportunity = None  # (OpportunityReference)
        self.cancelledFlag = None  # (Boolean)
        self.dateCancelled = None  # (String)
        self.reasonCancelled = None  # (String(50))
        self.slaId = None  # (Integer)
        self.workOrder = None  # (String(20))
        self.internalNotes = None  # (String(5000))
        self.applicationUnits = None  # (Enum)
        self.applicationLimit = None  # (Number)
        self.applicationCycle = None  # (Enum)
        self.applicationUnlimitedFlag = None  # (Boolean)
        self.oneTimeFlag = None  # (Boolean)
        self.coverAgreementTime = None  # (Boolean)
        self.coverAgreementProduct = None  # (Boolean)
        self.coverAgreementExpense = None  # (Boolean)
        self.coverSalesTax = None  # (Boolean)
        self.carryOverUnused = None  # (Boolean)
        self.allowOverruns = None  # (Boolean)
        self.expiredDays = None  # (Integer)
        self.limit = None  # (Integer)
        self.expireWhenZero = None  # (Boolean)
        self.chargeToFirm = None  # (Boolean)
        self.employeeCompRate = None  # (Enum)
        self.employeeCompNotExceed = None  # (Enum)
        self.compHourlyRate = None  # (Number)
        self.compLimitAmount = None  # (Number)
        self.billCycleId = None  # (Integer)
        self.billOneTimeFlag = None  # (Boolean)
        self.billTermsId = None  # (Integer)
        self.invoicingCycle = None  # (Enum)
        self.billToCompany = None  # (CompanyReference)
        self.billToSite = None  # (SiteReference)
        self.billAmount = None  # (Number)
        self.taxable = None  # (Boolean)
        self.prorateFirstBill = None  # (Number)
        self.billStartDate = None  # (String)
        self.taxCodeId = None  # (Integer)
        self.restrictDownPayment = None  # (Boolean)
        self.invoiceDescription = None  # (String)
        self.topComment = None  # (Boolean)
        self.bottomComment = None  # (Boolean)
        self.workRole = None  # (WorkRoleReference)
        self.workType = None  # (WorkTypeReference)
        self.projectTypeId = None  # (Integer)
        self.invoiceTemplateSetupId = None  # (Integer)
        self.billTime = None  # (Enum)
        self.billExpenses = None  # (Enum)
        self.billProducts = None  # (Enum)
        self.billableTimeInvoice = None  # (Boolean)
        self.billableExpenseInvoice = None  # (Boolean)
        self.billableProductInvoice = None  # (Boolean)
        self._info = None  # (Metadata)
        self.periodType = None  # (Enum)

        # initialize object with json dict
        super().__init__(json_dict)
