UNPKG

@logismix/mydata-client

Version:
336 lines (335 loc) 12 kB
import { AmountType, CountryType, CurrencyType, ExchangeRateType, FeesType, FuelCodes, InvoiceDetailType, InvoiceType, InvoiceVariationType, OtherTaxesType, // Imported for use in PaymentMethodDetailType definition QuantityType, SpecialInvoiceCategoryType, StampDutyType, VatExemptionType, VatType, WithheldType } from './simple-types.model'; import { IncomeClassificationType } from './incomeClassification.model'; import { ExpensesClassificationType } from './expensesClassification.model'; import { PaymentMethodDetailType } from './paymentMethods.model'; export interface AadeBookInvoiceDocType { InvoicesDoc: { invoice: AadeBookInvoiceType[]; }; } /** * Represents the main AADE Book Invoice structure. * Corresponds to <inv:AadeBookInvoiceType> */ export interface AadeBookInvoiceType { /** Invoice Identifier (calculated by service) */ uid?: string; /** Unique Invoice Registration Number (MARK) (assigned by service) */ mark?: number; /** MARK of the cancellation invoice, if this invoice was cancelled */ cancelledByMark?: number; /** Provider Authentication String (assigned by service if submitted by provider) */ authenticationCode?: string; /** Indicator for transmission failure (1, 2 for provider; 3 for ERP) */ transmissionFailure?: 1 | 2 | 3; /** Issuer details */ issuer?: PartyType; /** Counterpart (Recipient) details */ counterpart?: PartyType; /** Invoice header details */ invoiceHeader: InvoiceHeaderType; /** Payment methods used */ paymentMethods?: PaymentMethods; /** Invoice line item details */ invoiceDetails: InvoiceRowType[]; /** Tax totals applied to the whole invoice (excluding VAT) */ taxesTotals?: TaxesTotals; /** Summary of the invoice values */ invoiceSummary: InvoiceSummaryType; /** URL for the QR Code (generated by service) */ qrCodeUrl?: string; /** Additional transport details (e.g., change of means) */ otherTransportDetails?: TransportDetailType[]; } /** * Represents the invoice header. * Corresponds to <inv:InvoiceHeaderType> */ export interface InvoiceHeaderType { /** Invoice Series */ series: string; /** Invoice Sequential Number (AA) */ aa: string; /** Invoice Issue Date */ issueDate: Date; /** Invoice Type */ invoiceType: InvoiceType; /** VAT Payment Suspension indicator */ vatPaymentSuspension?: boolean; /** Currency code (ISO 4217) */ currency?: CurrencyType; /** Exchange rate relative to EUR (if currency is not EUR) */ exchangeRate?: ExchangeRateType; /** List of MARKs of correlated invoices */ correlatedInvoices?: number[]; /** Self-Pricing (Self-Billing) indicator */ selfPricing?: boolean; /** Dispatch Start Date */ dispatchDate?: Date; /** Dispatch Start Time */ dispatchTime?: Date; /** Transport Vehicle Number */ vehicleNumber?: string; /** Movement Purpose Code */ movePurpose?: number; /** Fuel invoice indicator */ fuelInvoice?: boolean; /** Special Invoice Category Code */ specialInvoiceCategory?: SpecialInvoiceCategoryType; /** Invoice Variation (Deviation) Type Code */ invoiceVariationType?: InvoiceVariationType; /** Other correlated entities involved */ otherCorrelatedEntities?: EntityType[]; /** Additional general delivery details */ otherDeliveryNoteHeader?: OtherDeliveryNoteHeaderType; /** Indicates if the invoice also serves as a delivery note */ isDeliveryNote?: boolean; /** Title for 'Other' movement purpose (if movePurpose = 19) */ otherMovePurposeTitle?: string; /** Third-Party Collection indicator (for types 8.4, 8.5) */ thirdPartyCollection?: boolean; /** Multiple Connected MARKs (e.g., for consolidating restaurant orders) */ multipleConnectedMarks?: number[]; /** Table Sequential Number (AA) (for type 8.6) */ tableAA?: string; /** Indicator for total cancellation of Order Slips (for type 8.6) */ totalCancelDeliveryOrders?: boolean; } /** * Represents a single line item on the invoice. * Corresponds to <inv:InvoiceRowType> */ export interface InvoiceRowType { /** Line Sequential Number (AA) */ lineNumber: number; /** Line Type Code (e.g., Fee, Other Tax) */ recType?: RecType; /** TARIC Code (for delivery notes) */ TaricNo?: string; /** Item Code (for delivery notes) */ itemCode?: string; /** Item Description (for delivery notes, tax-free) */ itemDescr?: string; /** Fuel Code (if fuelInvoice = true) */ fuelCode?: FuelCodes; /** Quantity */ quantity?: number; /** Measurement Unit Code */ measurementUnit?: QuantityType; /** Special Line Marking (Third Party Sales) */ invoiceDetailType?: InvoiceDetailType; /** Net Value of the line */ netValue: AmountType; /** VAT Category Code */ vatCategory: VatType; /** VAT Amount for the line */ vatAmount: AmountType; /** VAT Exemption Reason Code (if vatCategory is 0% type) */ vatExemptionCategory?: VatExemptionType; /** Declaration of Activity Details (POL 1177/2018 Art. 27) */ dienergia?: ShipType; /** VAT Discount Right indicator */ discountOption?: boolean; /** Withheld Tax Amount */ withheldAmount?: AmountType; /** Withheld Tax Rate Category Code */ withheldPercentCategory?: WithheldType; /** Stamp Duty Amount */ stampDutyAmount?: AmountType; /** Stamp Duty Rate Category Code */ stampDutyPercentCategory?: StampDutyType; /** Fees Amount */ feesAmount?: AmountType; /** Fees Rate Category Code */ feesPercentCategory?: FeesType; /** Other Taxes Rate Category Code */ otherTaxesPercentCategory?: OtherTaxesType; /** Other Taxes Amount */ otherTaxesAmount?: AmountType; /** Deductions Amount */ deductionsAmount?: AmountType; /** Comments specific to this line */ lineComments?: string; /** Income classifications for this line */ incomeClassification?: IncomeClassificationType[]; /** Expense classifications for this line */ expensesClassification?: ExpensesClassificationType[]; /** Quantity at 15 degrees Celsius (for fuel) */ quantity15?: number; /** Quantity for 'Other' measurement unit (if measurementUnit = 7) */ otherMeasurementUnitQuantity?: number; /** Title for 'Other' measurement unit (if measurementUnit = 7) */ otherMeasurementUnitTitle?: string; /** Indicator of non-participation in VAT (revenue – outflows) */ notVAT195?: boolean; } /** * Represents the summary section of the invoice. * Corresponds to <inv:InvoiceSummaryType> */ export interface InvoiceSummaryType { /** Total Net Value of the invoice */ totalNetValue: AmountType; /** Total VAT Amount of the invoice */ totalVatAmount: AmountType; /** Total Withheld Tax Amount */ totalWithheldAmount: AmountType; /** Total Fees Amount */ totalFeesAmount: AmountType; /** Total Stamp Duty Amount */ totalStampDutyAmount: AmountType; /** Total Other Taxes Amount */ totalOtherTaxesAmount: AmountType; /** Total Deductions Amount */ totalDeductionsAmount: AmountType; /** Total Gross Value of the invoice */ totalGrossValue: AmountType; /** Aggregated income classifications */ incomeClassification?: IncomeClassificationType[]; /** Aggregated expense classifications */ expensesClassification?: ExpensesClassificationType[]; } /** * Represents details of a party (issuer or counterpart). * Corresponds to <inv:PartyType> */ export interface PartyType { /** VAT Number */ vatNumber: string; /** Country Code (ISO 3166) */ country: CountryType; /** Branch Number (0 for headquarters or no branch) */ branch: number; /** Name (only for non-GR entities) */ name?: string; /** Address details (only for non-GR entities or loading/delivery) */ address?: AddressType; /** Official Document Number (e.g., passport for Tax-free) */ documentIdNo?: string; /** Electricity Supply Account Number (for fuel invoices) */ supplyAccountNo?: string; /** Country Code of Official Document Issue (for Tax-free) */ countryDocumentId?: CountryType; } /** * Represents address details. * Corresponds to <inv:AddressType> */ export interface AddressType { /** Street Name */ street?: string; /** Street Number */ number?: string; /** Postal Code */ postalCode: string; /** City Name */ city: string; } /** * Represents details related to POL 1177/2018 Art. 27. * Corresponds to <inv:ShipType> */ export interface ShipType { /** Activity Declaration Number */ applicationId: string; /** Declaration Date */ applicationDate: Date; /** Tax Office (DOY) of Declaration */ doy?: string; /** Ship Details identifier */ shipId: string; } /** * Represents tax totals applied at the invoice level. * Corresponds to <inv:TaxTotalsType> */ export interface TaxTotalsType { /** Tax Type Code (1: Withheld, 2: Fees, 3: Other, 4: StampDuty, 5: Deductions) */ taxType: 1 | 2 | 3 | 4 | 5; /** Tax Category Code (depends on taxType) */ taxCategory?: number; /** Value upon which the tax is calculated */ underlyingValue?: AmountType; /** Tax Amount */ taxAmount: AmountType; /** Line sequential number for this tax total entry */ id?: number; } /** * Represents details of other correlated entities. * Corresponds to <inv:EntityType> */ export interface EntityType { /** Entity Category Code (1-6) */ type: 1 | 2 | 3 | 4 | 5 | 6; /** Details of the entity */ entityData: PartyType; } /** * Represents additional transport details (e.g., vehicle change). * Corresponds to <inv:TransportDetailType> */ export interface TransportDetailType { /** Vehicle Number */ vehicleNumber: string; } /** * Represents additional general delivery details header. * Corresponds to <inv:OtherDeliveryNoteHeaderType> */ export interface OtherDeliveryNoteHeaderType { /** Loading Address details */ loadingAddress: AddressType; /** Delivery Address details */ deliveryAddress: AddressType; /** Issuer's branch where shipping starts (if different from header) */ startShippingBranch?: number; /** Recipient's branch where shipping completes (if different from header) */ completeShippingBranch?: number; } /** * Represents the signature from an E-Invoicing Provider for payments. * Corresponds to <inv:ProviderSignatureType> */ export interface ProviderSignatureType { /** Provider's ID (YPAHES Decision Number) */ SigningAuthor: string; /** Provider generated signature */ Signature: string; } /** * Represents the token/signature from an ECR (Fiscal Device) for payments via ERP. * Corresponds to <inv:ECRTokenType> */ export interface ECRTokenType { /** ECR ID (Fiscal Mechanism Registry Number) */ SigningAuthor: string; /** Unique 6-digit session/transaction code */ SessionNumber: string; } export interface PaymentMethods { paymentMethodDetails: PaymentMethodDetailType[]; } export interface TaxesTotals { taxes: TaxTotalsType[]; } /** * Enum for invoice row types (recType) with their corresponding codes and descriptions */ export declare enum RecType { /** Special Line for Withheld Taxes (Inactive - for future use) */ SPECIAL_WITHHELD_TAXES = 1, /** Fee Line with VAT */ FEE_WITH_VAT = 2, /** Other Taxes Line with VAT */ OTHER_TAXES_WITH_VAT = 3, /** Special Line for Stamp Duty (Inactive - for future use) */ SPECIAL_STAMP_DUTY = 4, /** Special Line for Deductions (Inactive - for future use) */ SPECIAL_DEDUCTIONS = 5, /** Gift Voucher */ GIFT_VOUCHER = 6, /** Negative value sign (Valid only for invoices 17.3, 17.4, 17.5, and 17.6) */ NEGATIVE_VALUE_SIGN = 7 }