package eform import ( "encoding/xml" "time" ) // ===================================================== // TENDERING TERMS // ===================================================== // TenderingTerms represents tendering terms type TenderingTerms struct { TendererQualificationRequest []TendererQualificationRequest `json:"tenderer_qualification_request,omitempty" xml:"TendererQualificationRequest,omitempty"` AppealTerms AppealTerms `json:"appeal_terms,omitempty" xml:"AppealTerms,omitempty"` CallForTendersDocumentReference CallForTendersDocumentReference `json:"call_for_tenders_document_reference,omitempty" xml:"CallForTendersDocumentReference,omitempty"` TenderRecipientParty TenderRecipientParty `json:"tender_recipient_party,omitempty" xml:"TenderRecipientParty,omitempty"` UBLExtensions UBLExtensions `json:"ubl_extensions,omitempty" xml:"UBLExtensions,omitempty"` } // TendererQualificationRequest represents qualification requirements type TendererQualificationRequest struct { SpecificTendererRequirement []SpecificTendererRequirement `json:"specific_tenderer_requirement,omitempty" xml:"SpecificTendererRequirement,omitempty"` } // SpecificTendererRequirement represents specific requirements type SpecificTendererRequirement struct { XMLName xml.Name `xml:"SpecificTendererRequirement"` TendererRequirementTypeCode string `xml:"TendererRequirementTypeCode"` Description string `xml:"Description,omitempty"` } // AppealTerms represents appeal terms for review organization type AppealTerms struct { XMLName xml.Name `xml:"AppealTerms"` AppealReceiverParty AppealReceiverParty `xml:"AppealReceiverParty"` } // AppealReceiverParty represents the party that receives appeals type AppealReceiverParty struct { XMLName xml.Name `xml:"AppealReceiverParty"` PartyIdentification PartyIdentification `xml:"PartyIdentification"` } // CallForTendersDocumentReference represents document reference type CallForTendersDocumentReference struct { XMLName xml.Name `xml:"CallForTendersDocumentReference"` ID string `xml:"ID"` DocumentType string `xml:"DocumentType,omitempty"` Attachment Attachment `xml:"Attachment"` UBLExtensions UBLExtensions `xml:"UBLExtensions,omitempty"` } // Attachment represents document attachment type Attachment struct { ExternalReference ExternalReference `json:"external_reference" xml:"ExternalReference"` } // ExternalReference represents external document reference type ExternalReference struct { XMLName xml.Name `xml:"ExternalReference"` URI string `xml:"URI"` } // TenderRecipientParty represents the party that receives tenders type TenderRecipientParty struct { XMLName xml.Name `xml:"TenderRecipientParty"` EndpointID string `xml:"EndpointID"` } // EOSize represents economic operator size restrictions type EOSize string const ( EOSizeNone EOSize = "none" EOSizeSME EOSize = "sme" EOSizeNotSME EOSize = "not-sme" ) // TenderOpening represents tender opening information type TenderOpening struct { DateTime time.Time `json:"date_time" xml:"date_time" validate:"required"` Place string `json:"place,omitempty" xml:"place,omitempty" validate:"max=500"` Description string `json:"description,omitempty" xml:"description,omitempty" validate:"max=2000"` }