<?php
namespace ModulesAbstract\ElectronicInvoice\UBL21Structure;

/**
 * Invoice
 * This element MUST be conveyed as the root element in any instance document based on this Schema expression
 * @see http://www.datypic.com/sc/ubl21/e-ns39_Invoice.html
 */
class TypeInvoice extends AbstractPeppolElement
{

	/**
	 * ext:UBLExtensions, 0..1, optional tag
	 *
	 * A container for all extensions present in the document.
	 * @var mixed
	 */
	public $UBLExtensions = null;

	/**
	 * cbc:UBLVersionID, 0..1, optional tag
	 *
	 * Identifies the earliest version of the UBL 2 schema for this document type that defines all of the elements that might
	 *   be encountered in the current instance.
	 * @var mixed
	 */
	public $UBLVersionID = '2.1';

	/**
	 * cbc:CustomizationID, 0..1, optional tag
	 *
	 * Identifies a user-defined customization of UBL for a specific use.
	 * @var mixed
	 */
	public $CustomizationID = null;

	/**
	 * cbc:ProfileID, 0..1, optional tag
	 *
	 * Identifies a user-defined profile of the customization of UBL being used.
	 * @var mixed
	 */
	public $ProfileID = null;

	/**
	 * cbc:ProfileExecutionID, 0..1, optional tag
	 *
	 * Identifies an instance of executing a profile, to associate all transactions in a collaboration.
	 * @var mixed
	 */
	public $ProfileExecutionID = null;

	/**
	 * cbc:ID, 1..1, MANDATORY tag
	 *
	 * An identifier for this document, assigned by the sender.
	 * @var mixed
	 */
	public $ID = null;

	/**
	 * cbc:CopyIndicator, 0..1, optional tag
	 *
	 * Indicates whether this document is a copy (true) or not (false).
	 * @var mixed
	 */
	public $CopyIndicator = null;

	/**
	 * cbc:UUID, 0..1, optional tag
	 *
	 * A universally unique identifier for an instance of this document.
	 * @var mixed
	 */
	public $UUID = null;

	/**
	 * cbc:IssueDate, 1..1, MANDATORY tag
	 *
	 * The date, assigned by the sender, on which this document was issued.
	 * @var mixed
	 */
	public $IssueDate = null;

	/**
	 * cbc:IssueTime, 0..1, optional tag
	 *
	 * The time, assigned by the sender, at which this document was issued.
	 * @var mixed
	 */
	public $IssueTime = null;

	/**
	 * cbc:DueDate, 0..1, optional tag
	 *
	 * The date on which Invoice is due.
	 * @var mixed
	 */
	public $DueDate = null;

	/**
	 * cbc:InvoiceTypeCode, 0..1, optional tag
	 *
	 * A code signifying the type of the Invoice.
	 * @var mixed
	 */
	public $InvoiceTypeCode = null;

	/**
	 * cbc:Note, 0..*
	 *
	 * Free-form text pertinent to this document, conveying information that is not contained explicitly in other structures.
	 * @var mixed
	 */
	public $Note = null;

	/**
	 * cbc:TaxPointDate, 0..1, optional tag
	 *
	 * The date of the Invoice, used to indicate the point at which tax becomes applicable.
	 * @var mixed
	 */
	public $TaxPointDate = null;

	/**
	 * cbc:DocumentCurrencyCode, 0..1, optional tag
	 *
	 * A code signifying the default currency for this document.
	 * @var mixed
	 */
	public $DocumentCurrencyCode = null;

	/**
	 * cbc:TaxCurrencyCode, 0..1, optional tag
	 *
	 * A code signifying the currency used for tax amounts in the Invoice.
	 * @var mixed
	 */
	public $TaxCurrencyCode = null;

	/**
	 * cbc:PricingCurrencyCode, 0..1, optional tag
	 *
	 * A code signifying the currency used for prices in the Invoice.
	 * @var mixed
	 */
	public $PricingCurrencyCode = null;

	/**
	 * cbc:PaymentCurrencyCode, 0..1, optional tag
	 *
	 * A code signifying the currency used for payment in the Invoice.
	 * @var mixed
	 */
	public $PaymentCurrencyCode = null;

	/**
	 * cbc:PaymentAlternativeCurrencyCode, 0..1, optional tag
	 *
	 * A code signifying the alternative currency used for payment in the Invoice.
	 * @var mixed
	 */
	public $PaymentAlternativeCurrencyCode = null;

	/**
	 * cbc:AccountingCostCode, 0..1, optional tag
	 *
	 * The buyer's accounting code, applied to the Invoice as a whole.
	 * @var mixed
	 */
	public $AccountingCostCode = null;

	/**
	 * cbc:AccountingCost, 0..1, optional tag
	 *
	 * The buyer's accounting code, applied to the Invoice as a whole, expressed as text.
	 * @var mixed
	 */
	public $AccountingCost = null;

	/**
	 * cbc:LineCountNumeric, 0..1, optional tag
	 *
	 * The number of lines in the document.
	 * @var mixed
	 */
	public $LineCountNumeric = null;

	/**
	 * cbc:BuyerReference, 0..1, optional tag
	 *
	 * A reference provided by the buyer used for internal routing of the document.
	 * @var mixed
	 */
	public $BuyerReference = null;

	/**
	 * cac:InvoicePeriod, 0..*
	 *
	 * A period to which the Invoice applies.
	 * @var mixed
	 */
	public $InvoicePeriod = null;

	/**
	 * cac:OrderReference, 0..1, optional tag
	 *
	 * A reference to the Order with which this Invoice is associated.
	 * @var mixed
	 */
	public $OrderReference = null;

	/**
	 * cac:BillingReference, 0..*
	 *
	 * A reference to a billing document associated with this document.
	 * @var mixed
	 */
	public $BillingReference = null;

	/**
	 * cac:DespatchDocumentReference, 0..*
	 *
	 * A reference to a Despatch Advice associated with this document.
	 * @var mixed
	 */
	public $DespatchDocumentReference = null;

	/**
	 * cac:ReceiptDocumentReference, 0..*
	 *
	 * A reference to a Receipt Advice associated with this document.
	 * @var mixed
	 */
	public $ReceiptDocumentReference = null;

	/**
	 * cac:StatementDocumentReference, 0..*
	 *
	 * A reference to a Statement associated with this document.
	 * @var mixed
	 */
	public $StatementDocumentReference = null;

	/**
	 * cac:OriginatorDocumentReference, 0..*
	 *
	 * A reference to an originator document associated with this document.
	 * @var mixed
	 */
	public $OriginatorDocumentReference = null;

	/**
	 * cac:ContractDocumentReference, 0..*
	 *
	 * A reference to a contract associated with this document.
	 * @var mixed
	 */
	public $ContractDocumentReference = null;

	/**
	 * cac:AdditionalDocumentReference, 0..*
	 *
	 * A reference to an additional document associated with this document.
	 * @var mixed
	 */
	public $AdditionalDocumentReference = null;

	/**
	 * cac:ProjectReference, 0..*
	 *
	 * Information about a project.
	 * @var mixed
	 */
	public $ProjectReference = null;

	/**
	 * cac:Signature, 0..*
	 *
	 * A signature applied to this document.
	 * @var mixed
	 */
	public $Signature = null;

	/**
	 * cac:AccountingSupplierParty, 1..1, MANDATORY tag
	 *
	 * The accounting supplier party.
	 * @var mixed
	 */
	public $AccountingSupplierParty = null;

	/**
	 * cac:AccountingCustomerParty, 1..1, MANDATORY tag
	 *
	 * The accounting customer party.
	 * @var mixed
	 */
	public $AccountingCustomerParty = null;

	/**
	 * cac:PayeeParty, 0..1, optional tag
	 *
	 * The payee.
	 * @var mixed
	 */
	public $PayeeParty = null;

	/**
	 * cac:BuyerCustomerParty, 0..1, optional tag
	 *
	 * The buyer.
	 * @var mixed
	 */
	public $BuyerCustomerParty = null;

	/**
	 * cac:SellerSupplierParty, 0..1, optional tag
	 *
	 * The seller.
	 * @var mixed
	 */
	public $SellerSupplierParty = null;

	/**
	 * cac:TaxRepresentativeParty, 0..1, optional tag
	 *
	 * The tax representative.
	 * @var mixed
	 */
	public $TaxRepresentativeParty = null;

	/**
	 * cac:Delivery, 0..*
	 *
	 * A delivery associated with this document.
	 * @var mixed
	 */
	public $Delivery = null;

	/**
	 * cac:DeliveryTerms, 0..1, optional tag
	 *
	 * A set of delivery terms associated with this document.
	 * @var mixed
	 */
	public $DeliveryTerms = null;

	/**
	 * cac:PaymentMeans, 0..*
	 *
	 * Expected means of payment.
	 * @var mixed
	 */
	public $PaymentMeans = null;

	/**
	 * cac:PaymentTerms, 0..*
	 *
	 * A set of payment terms associated with this document.
	 * @var mixed
	 */
	public $PaymentTerms = null;

	/**
	 * cac:PrepaidPayment, 0..*
	 *
	 * A prepaid payment.
	 * @var mixed
	 */
	public $PrepaidPayment = null;

	/**
	 * cac:AllowanceCharge, 0..*
	 *
	 * A discount or charge that applies to a price component.
	 * @var mixed
	 */
	public $AllowanceCharge = null;

	/**
	 * cac:TaxExchangeRate, 0..1, optional tag
	 *
	 * The exchange rate between the document currency and the tax currency.
	 * @var mixed
	 */
	public $TaxExchangeRate = null;

	/**
	 * cac:PricingExchangeRate, 0..1, optional tag
	 *
	 * The exchange rate between the document currency and the pricing currency.
	 * @var mixed
	 */
	public $PricingExchangeRate = null;

	/**
	 * cac:PaymentExchangeRate, 0..1, optional tag
	 *
	 * The exchange rate between the document currency and the payment currency.
	 * @var mixed
	 */
	public $PaymentExchangeRate = null;

	/**
	 * cac:PaymentAlternativeExchangeRate, 0..1, optional tag
	 *
	 * The exchange rate between the document currency and the payment alternative currency.
	 * @var mixed
	 */
	public $PaymentAlternativeExchangeRate = null;

	/**
	 * cac:TaxTotal, 0..*
	 *
	 * The total amount of a specific type of tax.
	 * @var mixed
	 */
	public $TaxTotal = null;

	/**
	 * cac:WithholdingTaxTotal, 0..*
	 *
	 * The total withholding tax.
	 * @var mixed
	 */
	public $WithholdingTaxTotal = null;

	/**
	 * cac:LegalMonetaryTotal, 1..1, MANDATORY tag
	 *
	 * The total amount payable on the Invoice, including Allowances, Charges, and Taxes.
	 * @var mixed
	 */
	public $LegalMonetaryTotal = null;

	/**
	 * cac:InvoiceLine, 1..*
	 *
	 * A line describing an invoice item.
	 * @var mixed
	 */
	public $InvoiceLine = null;

}
