Annytab Dox Trade v1

I den här dokumentationen beskriver vi Annytab Dox Trade v1, vår egna licensfria standard för ett affärsdokument som kan användas vid försäljning och inköp i ett företag. Försäljningsrutinen i ett företag innebär bland annat att ta emot offertförfrågningar från kunder, att skapa offerter, att ta emot ordrar från kunder och att skicka fakturor till kunder. Inköpsrutinen i ett företag innebär bland annat att skicka offertförfrågningar till leverantörer, att ta emot offerter, att skicka inköpsordrar till leverantörer och att ta emot fakturor från leverantörer.

Den här standarden för affärsdokument kan användas för offertförfrågning, offert, order, orderbekräftelse, faktura, kreditfaktura, kontantkvitto och betalningspåminnelse. Alla dessa dokument har samma utformning, beroende på vilken typ av dokument det rör sig om så kan man ignorera viss data i dokumentet. I den är standarden finns det en variabel som bestämmer vilken typ av dokument det rör sig om. En kreditfaktura (credit_invoice) är en negativ faktura och skall ha negativa kvantiteter i produktraderna och negativa totalbelopp.

Den här standarden bygger på JSON, ett kompakt och textbaserat format som används för att utbyta data. Det är smidigt att serialisera objekt i program till JSON och det är smidigt att deserialisera JSON till objekt i program. Denna standard finns inkluderad i ett NuGet paket: a-dox-standards (NuGet Gallery).

AnnytabDoxTrade [Modell]

Egenskap
Typ
Beskrivning
id
string
En lokal identitet för dokumentet som sätts av den som upprättar dokumentet. Kan exempelvis vara löpnumret i ett affärssystem.
document_type
string
En sträng som anger vilken typ av dokument det rör sig. Kan anta något av följande värden: request_for_quotation, quotation, order, order_confirmation, invoice, credit_invoice, cash_receipt, payment_reminder.
payment_reference
string
Den referens som skall anges vid betalning av fakturan. Kan vara ett fakturanummer, ett OCR-nummer eller en annan typ av identitet.
issue_date
string
Datumet då dokumentet upprättades. Datumet skall anges som yyyy-MM-dd (2017-09-31).
due_date
string
Datumet då fakturan senast skall betalas. Datumet skall anges som yyyy-MM-dd (2017-09-31).
delivery_date
string
I en faktura avses datumet då varorna levererades till kunden. I en offertförfrågan eller en order avses önskat leveransdatum, i en offert avses uppskattat leveransdatum. Datumet skall anges som yyyy-MM-dd (2017-09-31), ange en tom sträng om leveransdatum inte behöver anges.
offer_expires_date
string
Det datum då erbjudandet i en offert går ut, erbjudandet i offerten gäller inte efter detta datum. Datumet skall anges som yyyy-MM-dd (2017-09-31), ange en tom sträng eller null om utgångsdatum för offert inte behöver anges.
seller_references
Dictionary<string, string>
Här kan man ange referenser som avser säljaren, exempelvis så kan köparen ange sitt interna leverantörsnummer avseende säljaren. Möjliga nycklar: supplier_id, quotation_id, order_id och invoice_id.
buyer_references
Dictionary<string, string>
Här kan man ange referenser som avser köparen, exempelvis så kan säljaren ange sitt interna kundnummer avseende köparen. Möjliga nycklar: customer_id, request_for_quotation_id och order_id.
terms_of_delivery
string
En kod om 3 tecken enligt Incoterms 2010 eller senare som anger villkoren för leveransen.
terms_of_payment
string
En kod som anger betalningsvillkoren för fakturan. Det finns ingen vedertagen standard för betalningskoder, dessa koder förekommer internationellt: PIA, 7, 10, 30, 60, 90, EOM, 1% 10 Net 30, COD, Cash account, Letter of credit, Bill of exchange, CND, CBS, CIA, CWO, 1MD, 2MD, Contra, Stage payment.
mode_of_delivery
string
En kod som anger hur produkterna levereras (leveranssätt), exempelvis Mail, Email, Web, DHL, UPS.
total_weight_kg
decimal
Den totala vikten i kilogram för hela leveransen, används bland annat för statistiska ändamål (Intrastat).
penalty_interest
decimal
Ett decimaltal som anger dröjsmålsräntan vid sen betalning av fakturan. En dröjsmålsränta på 10 % anges som 0.10 och en dröjsmålsränta på 12,5 % anges som 0.125.
currency_code
string
En kod på 3 bokstäver enligt ISO 4217 som anger den valuta som gäller för beloppen i dokumentet.
vat_country_code
string
En landskod på 2 bokstäver enligt ISO 3166-1 som anger vilket lands mervärdesskatt/omsättningsskatt som tillämpas på fakturan.
vat_state_code
string
En kod på 2 bokstäver som anger vilken stats mervärdesskatt/omsättningsskatt som tillämpas på fakturan. Är tillämpligt för länder som har stater, exempelvis USA.
comment
string
Här kan du ange ett meddelande i text/html.
seller_information
PartyInformation
Den här modellen innehåller information om säljaren, se beskrivningen för PartyInformation nedan.
buyer_information
PartyInformation
Den här modellen innehåller information om köparen, se beskrivningen för PartyInformation nedan.
delivery_information
PartyInformation
Den här modellen innehåller information om mottagaren och den plats som varorna skall levereras till, se beskrivningen för PartyInformation nedan.
payment_options
IList<PaymentOption>
Här presenteras en lista med betalningsalternativ, se beskrivning för PaymentOption nedan.
product_rows
IList<ProductRow>
Här presenteras en lista med produktrader, se beskrivning för ProductRow neden.
vat_specification
IList<VatSpecification>
Här presenteras en lista med momsspecifikationer, se beskrivning för VatSpecification nedan.
subtotal
decimal
Här anges den totala nettosumman för hela dokumentet, exklusive moms och i angiven valuta.
vat_total
decimal
Här anges den totala mervärdesskatten/omsättningskatten för hela dokumentet i angiven valuta.
rounding
decimal
Här anges ett avrundningsbelopp i angiven valuta, påverkar inte den totala mervärdesskatten/omsättningskatten.
total
decimal
Här anges det totala beloppet för hela dokumentet, inklusive moms, justerat för avrundning och i angiven valuta.
paid_amount
decimal
Här det totala belopp som kunden redan har betalat.
balance_due
decimal
Här anges det totala belopp som köparen är skyldig säljaren, totalt belopp minus betalt belopp.

PartyInformation [Modell]

Egenskap
Typ
Beskrivning
person_id
string
Ett identitetsnummer för personen, kan exempelvis vara personnummer, organisationsnummer eller Social Security Number. Används tillsammans med landskoden (country_code) för att identifiera den fysiska- eller juridiska personen.
person_name
string
Den fysiska- eller juridiska personens namn.
address_line_1
string
Den första adressraden. Kan innehålla C/O-referens, gatunamn och lägenhetsnummer med mera.
address_line_2
string
Den andra adressraden. Kan innehålla C/O-referens, gatunamn och lägenhetsnummer med mera.
address_line_3
string
Den tredje adressraden. Kan innehålla C/O-referens, gatunamn och lägenhetsnummer med mera.
postcode
string
Här anges en postkod för parten, en alfanumerisk kombination som används för att ange ett geografiskt område.
city_name
string
Här anges en postort för parten, ett geografiskt område med en egen postadress. Exempelvis namnet på en stad.
country_name
string
Namnet på det land som gäller för adressen.
country_code
string
En landskod på 2 bokstäver enligt ISO 3166-1 avseende det land som adressen gäller för.
state_code
string
En kod på 2 bokstäver som anger staten där postorten finns.
contact_name
string
Namnet på partens kontaktperson, kontaktpersonens namn kan skilja sig från partens namn.
phone_number
string
Telefonnumret till parten eller partens kontaktperson
email
string
En e-postadress för parten eller partens kontaktperson.
vat_number
string
Partens VAT-nummer/registreringsnummer för mervärdesskatt/omsättningsskatt.

PaymentOption [Modell]

Egenskap
Typ
Beskrivning
name
string
Här anges ett standardiserat namn för betalningsalternativet. Exempelvis: IBAN, BG, PG, SWISH, PAYPAL eller BANK.
account_reference
string
Här anges identiteten för betalningsalternativet, exempelvis kontonummer, e-postadress eller en url. Kontonummer skall anges utan mellanslag och bindestreck. Om ett konto har ett clearingnummer så anges detta framför kontonumret som ett enda nummer.
bank_identifier_code
string
Här anges bankens BIC-kod. BIC är en internationell standard som används för att identifiera en bank vid internationella överföringar.
bank_name
string
Här anges bankens namn.
bank_country_code
string
Här anges en landskod på 2 bokstäver enligt ISO 3166-1 för banken.

ProductRow [Modell]

Egenskap
Typ
Beskrivning
product_code
string
Ett unikt artikelnummer. Artikelnumret är en kort kod som används för att identifiera produkten.
manufacturer_code
string
Tillverkarens artikelnummer (MPN). Denna kod används för att identifiera produkten om det inte finns något gtin för produkten.
gtin
string
Produktens GTIN, ett globalt artikelnummer som enbart består av siffror. GTIN nvänds för att identifiera konsumentprodukter och kan vara av olika längd (8, 12, 13, 14). GTIN är användbart eftersom det kan översättas till en streckkod som kan avläsas av en skanner.
product_name
string
Ett beskrivande namn för produkten och dess egenskaper.
vat_rate
decimal
Den momssats som gäller för produkten. Anges som ett decimaltal, 25% skrivs som 0.25.
quantity
decimal
Här anges produktens offererade/beställda/levererade kvantitet. Antalet enheter avseende produktraden.
unit_code
string
Här anges en enhetskod enligt ISO 20022 avseende den angivna kvantiteten.
unit_price
decimal
Priset för en enhet av produkten exklusive moms, anges i valutan för dokumentet.
subrows
IList<ProductRow>
En lista med ingående produktrader, används för paketprodukter som innehåller andra produkter.

VatSpecification [Modell]

Egenskap
Typ
Beskrivning
tax_rate
decimal
Här anges en momssats som ett decimaltal. En moms om 25 % anges som 0.25.
taxable_amount
decimal
Här anges det totala beskattningsunderlaget avseende angiven momssats.
tax_amount
decimal
Här anges det totala momsbeloppet avseende momssatsen, momssats multiplicerat med beskattningsunderlag.

JSON-Exempel

{
  "id": "d82f56c8-7f87-402d-bbce-3af3e8287e67",
  "document_type": "invoice",
  "payment_reference": "D-2000",
  "issue_date": "2017-12-04",
  "due_date": "2018-01-03",
  "delivery_date": "2017-12-04",
  "offer_expires_date": null,
  "seller_references": {
    "supplier_id": "test"
  },
  "buyer_references": {
    "customer_id": "F557882"
  },
  "terms_of_delivery": "CIF",
  "terms_of_payment": "30",
  "mode_of_delivery": "UPS",
  "total_weight_kg": 10,
  "penalty_interest": 0.2,
  "currency_code": "USD",
  "vat_country_code": "SE",
  "vat_state_code": null,
  "comment": "Thank you for buying from us.",
  "seller_information": {
    "person_id": "778899-7447",
    "person_name": "Supplier Inc",
    "address_line_1": "Abroad way 55",
    "address_line_2": null,
    "address_line_3": null,
    "postcode": "CA90009",
    "city_name": "San Francisco",
    "country_name": "USA",
    "country_code": "US",
    "state_code": "CA",
    "contact_name": "Brenda Meatloaf",
    "phone_number": "+8800004545",
    "email": "olle@annytab.se",
    "vat_number": "778899-7447"
  },
  "buyer_information": {
    "person_id": "556864-2747",
    "person_name": "A Name Not Yet Taken AB",
    "address_line_1": "Skonertgatan 12",
    "address_line_2": "Kronobränneriet",
    "address_line_3": "",
    "postcode": "30238",
    "city_name": "Halmstad",
    "country_name": "Sweden",
    "country_code": "SE",
    "state_code": "",
    "contact_name": "Fredrik Stigsson",
    "phone_number": "",
    "email": "dox@annytab.se",
    "vat_number": "SE556864274701"
  },
  "delivery_information": null,
  "payment_options": [
    {
      "name": "IBAN",
      "account_reference": "SE4680000816959239073274",
      "bank_identifier_code": "SWEDSESS",
      "bank_name": "Swedbank AB",
      "bank_country_code": "SE"
    },
    {
      "name": "BG",
      "account_reference": "7893514",
      "bank_identifier_code": "BGABSESS",
      "bank_name": "Bankgirocentralen BGC AB",
      "bank_country_code": "SE"
    },
    {
      "name": "BANK",
      "account_reference": "816959239073274",
      "bank_identifier_code": "SWEDSESS",
      "bank_name": "Swedbank AB",
      "bank_country_code": "SE"
    },
    {
      "name": "SWISH",
      "account_reference": "1235370366",
      "bank_identifier_code": "SWEDSESS",
      "bank_name": "Swedbank AB",
      "bank_country_code": "SE"
    },
    {
      "name": "PAYPAL.ME",
      "account_reference": "https://www.paypal.me/annytab",
      "bank_identifier_code": "",
      "bank_name": "PayPal",
      "bank_country_code": "US"
    }
  ],
  "product_rows": [
    {
      "product_code": null,
      "manufacturer_code": null,
      "gtin": null,
      "product_name": "Support",
      "vat_rate": 0.25,
      "quantity": 10.46,
      "unit_code": "h",
      "unit_price": 11.44,
      "subrows": null
    },
    {
      "product_code": "C-546",
      "manufacturer_code": "TT99878",
      "gtin": null,
      "product_name": "Computer",
      "vat_rate": 0.12,
      "quantity": 1,
      "unit_code": "pcs",
      "unit_price": 499.99,
      "subrows": null
    },
    {
      "product_code": "D-4879",
      "manufacturer_code": null,
      "gtin": "0000001",
      "product_name": "Desk",
      "vat_rate": 0.06,
      "quantity": 2,
      "unit_code": "pcs",
      "unit_price": 2,
      "subrows": null
    }
  ],
  "vat_specification": [
    {
      "tax_rate": 0.25,
      "taxable_amount": 119.6624,
      "tax_amount": 29.9156
    },
    {
      "tax_rate": 0.12,
      "taxable_amount": 499.99,
      "tax_amount": 59.9988
    },
    {
      "tax_rate": 0.06,
      "taxable_amount": 4,
      "tax_amount": 0.24
    }
  ],
  "subtotal": 624,
  "vat_total": 90.1544,
  "rounding": -0.1544,
  "total": 714,
  "paid_amount": 0,
  "balance_due": 714
}

Exempelkod

// Create an invoice
AnnytabDoxTrade post = new AnnytabDoxTrade();
post.id = invoice.id;
post.document_type = "invoice";
post.payment_reference = invoice.invoice_number;
post.issue_date = invoice.invoice_date.ToString("yyyy-MM-dd");
post.due_date = invoice.invoice_date.AddDays(30).ToString("yyyy-MM-dd");
post.delivery_date = invoice.invoice_date.ToString("yyyy-MM-dd");
post.seller_references = new Dictionary<string, string>();
post.seller_references.Add("supplier_id", "T2000");
post.seller_references.Add("quotation_id", "546");
post.seller_references.Add("order_id", "1890");
post.buyer_references = new Dictionary<string, string>();
post.buyer_references.Add("customer_id", invoice.member_id);
post.buyer_references.Add("request_for_quotation_id", "55");
post.buyer_references.Add("order_id", "504");
post.terms_of_delivery = "EXW";
post.terms_of_payment = "Net 30";
post.mode_of_delivery = "WEB";
post.total_weight_kg = 0M;
post.penalty_interest = 0.10M;
post.currency_code = invoice.currency_code;
post.vat_country_code = "SE";
post.vat_state_code = "";
post.comment = tt.Get("invoice_text");
post.seller_information = new PartyInformation()
{
    person_id = "556864-2747",
    person_name = "A Name Not Yet Taken AB",
    address_line_1 = "Skonertgatan 12",
    address_line_2 = "Kronobränneriet",
    address_line_3 = "",
    postcode = "30238",
    city_name = "Halmstad",
    country_name = "Sweden",
    country_code = "SE",
    state_code = "",
    contact_name = "Fredrik Stigsson",
    phone_number = "",
    email = "info@annytab.se",
    vat_number = "SE556864274701"
};
post.buyer_information = new PartyInformation
{
    person_id = invoice.person_id,
    person_name = invoice.invoice_name,
    address_line_1 = invoice.invoice_address_1,
    address_line_2 = invoice.invoice_address_2,
    address_line_3 = "",
    postcode = invoice.invoice_postcode,
    city_name = invoice.invoice_city,
    country_name = invoice.invoice_country,
    country_code = invoice.invoice_country_code,
    state_code = "",
    contact_name = invoice.contact_name,
    phone_number = invoice.phone_number,
    email = invoice.invoice_email,
    vat_number = invoice.vat_number
};
post.payment_options = new List<PaymentOption>
{
    new PaymentOption
    {
        name = "IBAN",
        account_reference = "SE4680000816959239073274",
        bank_identifier_code = "SWEDSESS",
        bank_name = "Swedbank AB",
        bank_country_code = "SE"
    },
    new PaymentOption
    {
        name = "BG",
        account_reference = "7893514",
        bank_identifier_code = "BGABSESS",
        bank_name = "Bankgirocentralen BGC AB",
        bank_country_code = "SE"
    },
    new PaymentOption
    {
        name = "SWISH",
        account_reference = "1235370366",
        bank_identifier_code = "SWEDSESS",
        bank_name = "Swedbank AB",
        bank_country_code = "SE"
    }
};
post.product_rows = new List<ProductRow>
{
    new ProductRow
    {
        product_code = "GiB",
        manufacturer_code = "GiB",
        gtin = "",
        product_name = tt.Get("gibibytes"),
        vat_rate = invoice.vat_rate,
        quantity = invoice.gib,
        unit_code = "PIEC",
        unit_price = invoice.unit_price,
        subrows = new List<ProductRow>()
    }
};
post.vat_specification = new List<VatSpecification>
{
    new VatSpecification
    {
        tax_rate = invoice.vat_rate,
        taxable_amount = invoice.net_amount,
        tax_amount = invoice.vat_amount,
    }
};
post.subtotal = invoice.net_amount;
post.vat_total = invoice.vat_amount;
post.rounding = 0M;
post.total = invoice.gross_amount;
post.paid_amount = invoice.paid == true ? invoice.gross_amount : 0;
post.balance_due = invoice.gross_amount - post.paid_amount;

// Convert the object to a byte array
byte[] array = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(post));

// Write to the stream
stream.Write(array, 0, array.Length);

Lämna ett svar

E-postadressen publiceras inte. Obligatoriska fält är märkta *