<?php
namespace ModulesAbstract\ElectronicInvoice\UBL30Structure;

/**
 * ubl:CreditNote
 * Please note that all element names are inhereted from EN16931 and naming use the term invoice, but this covers both invoice and credit notes.
 * The tag names are correct according to the UBL Credit note schema
 * @see https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-creditnote/
 */
class CreditNote extends AbstractPeppolElement
{

	/**
	 * cbc:CustomizationID, MANDATORY tag
	 *
	 * Specification identifier
	 * An identification of the specification containing the total set of rules regarding semantic content, cardinalities and
	 *   business rules to which the data contained in the instance document conforms.
	 *
	 * Default value: urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0
	 * @var mixed
	 */
	public $CustomizationID = 'urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0';

	/**
	 * cbc:ProfileID, MANDATORY tag
	 *
	 * Business process type
	 * Identifies the business process context in which the transaction appears, to enable the Buyer to process the Invoice in
	 *   an appropriate way.
	 *
	 * Default value: urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
	 * @var mixed
	 */
	public $ProfileID = 'urn:fdc:peppol.eu:2017:poacc:billing:01:1.0';

	/**
	 * cbc:ID, MANDATORY tag
	 *
	 * Invoice number
	 * A unique identification of the Invoice. The sequential number required in Article 226(2) of the directive 2006/112/EC
	 *   [2], to uniquely identify the Invoice within the business context, time-frame, operating systems and records of the
	 *   Seller. No identification scheme is to be used.
	 *
	 * Example value: 33445566
	 * @var mixed
	 */
	public $ID = null;

	/**
	 * cbc:IssueDate, MANDATORY tag
	 *
	 * Invoice issue date
	 * The date when the Invoice was issued. Format "YYYY-MM-DD"
	 *
	 * Example value: 2017-11-01
	 * @var mixed
	 */
	public $IssueDate = null;

	/**
	 * cbc:InvoiceTypeCode, MANDATORY tag
	 *
	 * Invoice type code
	 * A code specifying the functional type of the Invoice.
	 * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL1001-inv/
	 *
	 * Example value: 381
	 * @var mixed
	 */
	public $CreditNoteTypeCode = null;

	/**
	 * cbc:Note, optional tag
	 *
	 * Invoice note
	 * A textual note that gives unstructured information that is relevant to the Invoice as a whole.Such as the reason for any
	 *   correction or assignment note in case the invoice has been factored.
	 *
	 * Example value: Please note our new phone number 33 44 55 66
	 * @var mixed
	 */
	public $Note = null;

	/**
	 * cbc:TaxPointDate, optional tag
	 *
	 * Value added tax point date
	 * The date when the VAT becomes accountable for the Seller and for the Buyer in so far as that date can be determined and
	 *   differs from the date of issue of the invoice, according to the VAT directive.This element is required if the Value
	 *   added tax point date is different from the Invoice issue date.
	 *
	 * Example value: 2017-11-01
	 * @var mixed
	 */
	public $TaxPointDate = null;

	/**
	 * cbc:DocumentCurrencyCode, MANDATORY tag
	 *
	 * Invoice currency code
	 * The currency in which all Invoice amounts are given, except for the Total VAT amount in accounting currency. Only one
	 *   currency shall be used in the Invoice, except for the VAT accounting currency code (BT-6) and the invoice total VAT
	 *   amount in accounting currency (BT-111).
	 *
	 * Example value: EUR
	 * @var mixed
	 */
	public $DocumentCurrencyCode = null;

	/**
	 * cbc:TaxCurrencyCode, optional tag
	 *
	 * VAT accounting currency code
	 * The currency used for VAT accounting and reporting purposes as accepted or required in the country of the Seller. Shall
	 *   be used in combination with the Invoice total VAT amount in accounting currency (BT-111), when the VAT accounting
	 *   currency code differs from the Invoice currency code.
	 *
	 * Example value: SEK
	 * @var mixed
	 */
	public $TaxCurrencyCode = null;

	/**
	 * cbc:AccountingCost, optional tag
	 *
	 * Buyer accounting reference
	 * A textual value that specifies where to book the relevant data into the Buyer's financial accounts.
	 *
	 * Example value: 4217:2323:2323
	 * @var mixed
	 */
	public $AccountingCost = null;

	/**
	 * cbc:BuyerReference, optional tag
	 *
	 * Buyer reference
	 * An identifier assigned by the Buyer used for internal routing purposes. An invoice must have buyer reference or purchase
	 *   order reference (BT-13).
	 *
	 * Example value: abs1234
	 * @var mixed
	 */
	public $BuyerReference = null;

	/**
	 * cac:InvoicePeriod, optional tag
	 *
	 * DELIVERY OR INVOICE PERIOD
	 * A group of business terms providing information on the invoice period. Also called delivery period. If the group is
	 *   used, the invoiceing period start date and/or end date must be used.
	 * @var mixed
	 */
	public $InvoicePeriod = null;

	/**
	 * cac:OrderReference, optional tag
	 *
	 * ORDER AND SALES ORDER REFERENCE
	 *
	 * @var mixed
	 */
	public $OrderReference = null;

	/**
	 * cac:BillingReference, list(0..n), optional tag
	 *
	 * PRECEDING INVOICE REFERENCE
	 * A group of business terms providing information on one or more preceding Invoices.
	 * @var mixed
	 */
	public $BillingReference = null;

	/**
	 * cac:DespatchDocumentReference, optional tag
	 *
	 * DESPATCH ADVICE REFERENCE
	 *
	 * @var mixed
	 */
	public $DespatchDocumentReference = null;

	/**
	 * cac:ReceiptDocumentReference, optional tag
	 *
	 * RECEIPT ADVICE REFERENCE
	 *
	 * @var mixed
	 */
	public $ReceiptDocumentReference = null;

	/**
	 * cac:OriginatorDocumentReference, optional tag
	 *
	 * TENDER OR LOT REFERENCE
	 *
	 * @var mixed
	 */
	public $OriginatorDocumentReference = null;

	/**
	 * cac:ContractDocumentReference, optional tag
	 *
	 * CONTRACT REFERENCE
	 *
	 * @var mixed
	 */
	public $ContractDocumentReference = null;

	/**
	 * cac:AdditionalDocumentReference, list(0..n), optional tag
	 *
	 * ADDITIONAL SUPPORTING DOCUMENTS
	 * A group of business terms providing information about additional supporting documents substantiating the claims made in
	 *   the Invoice. The additional supporting documents can be used for both referencing a document number which is expected to
	 *   be known by the receiver, an external document (referenced by a URL) or as an embedded document, Base64 encoded (such as
	 *   a time report).
	 * @var mixed
	 */
	public $AdditionalDocumentReference = null;

	/**
	 * cac:ProjectReference, optional tag
	 *
	 * PROJECT REFERENCE
	 *
	 * @var mixed
	 */
	public $ProjectReference = null;

	/**
	 * cac:AccountingSupplierParty, MANDATORY tag
	 *
	 * SELLER
	 * A group of business terms providing information about the Seller.
	 * @var mixed
	 */
	public $AccountingSupplierParty = null;

	/**
	 * cac:AccountingCustomerParty, MANDATORY tag
	 *
	 * BUYER
	 * A group of business terms providing information about the Buyer.
	 * @var mixed
	 */
	public $AccountingCustomerParty = null;

	/**
	 * cac:PayeeParty, optional tag
	 *
	 * PAYEE
	 * A group of business terms providing information about the Payee, i.e. the role that receives the payment. Shall be used
	 *   when the Payee is different from the Seller.
	 * @var mixed
	 */
	public $PayeeParty = null;

	/**
	 * cac:TaxRepresentativeParty, optional tag
	 *
	 * SELLER TAX REPRESENTATIVE PARTY
	 * A group of business terms providing information about the Seller's tax representative.
	 * @var mixed
	 */
	public $TaxRepresentativeParty = null;

	/**
	 * cac:Delivery, optional tag
	 *
	 * DELIVERY INFORMATION
	 * A group of business terms providing information about where and when the goods and services invoiced are delivered.
	 * @var mixed
	 */
	public $Delivery = null;

	/**
	 * cac:PaymentMeans, list(0..n), optional tag
	 *
	 * PAYMENT INSTRUCTIONS
	 * A group of business terms providing information about the payment.
	 * @var mixed
	 */
	public $PaymentMeans = null;

	/**
	 * cac:PaymentTerms, optional tag
	 *
	 * PAYMENT TERMS
	 *
	 * @var mixed
	 */
	public $PaymentTerms = null;

	/**
	 * cac:AllowanceCharge, list(0..n), optional tag
	 *
	 * DOCUMENT LEVEL ALLOWANCES AND CHARGES
	 * A group of business terms providing information about allowances applicable to the Invoice as a whole. A group of
	 *   business terms providing information about charges and taxes other than VAT, applicable to the Invoice as a whole.
	 * @var mixed
	 */
	public $AllowanceCharge = null;

	/**
	 * cac:TaxTotal, list(1..2), MANDATORY tag
	 *
	 * TAX TOTAL
	 * When tax currency code is provided, two instances of the tax total must be present, but only one with tax subtotal.
	 * @var mixed
	 */
	public $TaxTotal = null;

	/**
	 * cac:LegalMonetaryTotal, MANDATORY tag
	 *
	 * DOCUMENT TOTALS
	 * A group of business terms providing the monetary totals for the Invoice.
	 * @var mixed
	 */
	public $LegalMonetaryTotal = null;

	/**
	 * cac:InvoiceLine, list(1..n), MANDATORY tag
	 *
	 * INVOICE LINE
	 * A group of business terms providing information on individual Invoice lines.
	 * @var CreditNoteLine[]
	 */
	public $CreditNoteLine = null;

}
