CFL Import Sales Documents API
APIPublisher = 'Dynamate';
APIGroup = 'bocountdynamics';
APIVersion = 'v2.0';
EntityName = 'importsalesdocument';
EntitySetName = 'importsalesdocuments';
GET
Method: GET
https://server address:server API port/server instance name/api/Dynamate/BoCountDynamics/v2.0/companies(companyid)/importsalesdocuments(id)
entity:
{
"@odata.etag": "W/\"JzIwOzEyMjQ2ODA5MTk5NDM2ODMzMjk5MTswMDsn\"",
"id": "dcaa72ee-a42e-ed11-97e8-000d3a254c9a",
"contentstring": "",
"service":false,
"documentType": "Invoice",
"no": "201907049",
"customerNo": "1417",
"name": "",
"postingDescription": "",
"standardFormatMessage": "141790704943",
"journalTemplateName": "VERKOOP",
"postingDate": "2019-06-14",
"documentDate": "2019-06-14",
"dueDate": "2019-06-14",
"paymentDiscountPct": 0,
"pmtDiscountDate": "0001-01-01",
"vatBaseDiscountPct": 0,
"currencyCode": "",
"currencyFactor": 0,
"vatBusPostingGroup": "BINNENLAND",
"invoiceDiscountAmount": 0,
"docAmountInclVAT": 119.49,
"docAmountVAT": 20.74,
"shortcutDimension1Code": "",
"shortcutDimension2Code": "",
"eloID": "",
"cflArea": "",
"transactionSpecification": "",
"transactionType": "",
"transportMethod": "",
"docImage":"",
"docNotes":"",
"createdDocType": 0,
"createdDocSubtype": 0,
"createdDocNo": "",
"errorMessage": ""
}
DELETE
Method: DELETE
https://server address:server API port/server instance name/api/Dynamate/BoCountDynamics/v2.0/companies(companyid)/importsalesdocuments(id)
UPDATE
method: PATCH
https://server address:server API port/server instance name/api/Dynamate/BoCountDynamics/v2.0/companies(companyid)/importsalesdocuments(dcaa72ee-a42e-ed11-97e8-000d3a254c9a)
Headers:
"If-Match" :W/"JzIwOzEyMjQ2ODA5MTk5NDM2ODMzMjk5MTswMDsn""
Body:
{
"name": "TEST-aanpassing"
}
CREATE
Gebruik deze API om een verkoopfactuur of creditnota te importeren.
Dit kan via een PEPPOL xml:
method : POST
Url: https://server address:server API port/server instance name/api/Dynamate/BoCountDynamics/v2.0/companies(companyid)/importsalesdocuments
body;
{
"contentstring": "base64string"
}
NOTE
Het veld contentstring moet een base64-string bevatten van het xml-bestand van de factuur/creditnota. Indien het veld contentstring gevuld is dan mogen de andere velden niet ingevuld worden. Indien het veld contentstring niet gevuld is dan moeten de andere velden ingevuld worden.
Of adhv. invullen van de velden:
Url: https://server address:server API port/server instance name/api/Dynamate/BoCountDynamics/v2.0/companies(companyid)/importsalesdocuments
body;
{
"service":false,
"documentType": "Invoice",
"no": "201907049",
"customerNo": "1417",
"name": "",
"postingDescription": "",
"standardFormatMessage": "141790704943",
"journalTemplateName": "VERKOOP",
"postingDate": "2019-06-14",
"documentDate": "2019-06-14",
"dueDate": "2019-06-14",
"paymentDiscountPct": 0,
"pmtDiscountDate": "0001-01-01",
"vatBaseDiscountPct": 0,
"currencyCode": "",
"currencyFactor": 0,
"vatBusPostingGroup": "",
"invoiceDiscountAmount": 0,
"docAmountInclVAT": 119.49,
"docAmountVAT": 20.74,
"shortcutDimension1Code": "",
"shortcutDimension2Code": "",
"eloID": "",
"cflArea": "",
"transactionSpecification": "",
"transactionType": "",
"transportMethod": "",
"docImage":"",
"docNotes":""
}
Het is ook mogelijk om zowel header als lines in 1 post toe te voegen: body;
{
"service":false,
"documentType": "Invoice",
"no": "201907049",
"customerNo": "1417",
"name": "",
"postingDescription": "",
"standardFormatMessage": "141790704943",
"journalTemplateName": "VERKOOP",
"postingDate": "2019-06-14",
"documentDate": "2019-06-14",
"dueDate": "2019-06-14",
"paymentDiscountPct": 0,
"pmtDiscountDate": "0001-01-01",
"vatBaseDiscountPct": 0,
"currencyCode": "",
"currencyFactor": 0,
"vatBusPostingGroup": "",
"invoiceDiscountAmount": 0,
"docAmountInclVAT": 119.49,
"docAmountVAT": 20.74,
"shortcutDimension1Code": "",
"shortcutDimension2Code": "",
"eloID": "",
"cflArea": "",
"transactionSpecification": "",
"transactionType": "",
"transportMethod": "",
"docImage":"",
"docNotes":"",
"importSalesDocumentLines": [
{
"type": "G/L Account",
"no":"600000",
"description":"Test regel 1",
"quantity":1,
"vatBusPostingGroup":"BINNENLAND",
"vatProdPostingGroup":"G3",
"unitPrice":500
},
{
"type": "G/L Account",
"no":"600000",
"description":"Test regel 1",
"quantity":1,
"vatBusPostingGroup":"BINNENLAND",
"vatProdPostingGroup":"G3",
"unitPrice":500
}
]
}
NOTE
Het veld docImage moet een base64-string bevatten van het pdf-bestand van de factuur/creditnota.
Vanaf BC 27.0: Het wordt aanbevolen om de nieuwe documentImages API part te gebruiken voor het uploaden van meerdere PDF-bestanden. Het oude docImage veld blijft beschikbaar maar wordt obsolete verklaard.
Meerdere documentafbeeldingen toevoegen (BC 27.0+)
Vanaf Business Central 27.0 is het mogelijk om meerdere PDF-bestanden toe te voegen als documentafbeeldingen via de nieuwe importSalesDocumentImages API part:
{
"service": false,
"documentType": "Invoice",
"no": "201907049",
"customerNo": "1417",
"name": "Contoso Ltd.",
"postingDescription": "Sales Invoice",
"postingDate": "2019-06-14",
"documentDate": "2019-06-14",
"dueDate": "2019-06-14",
"docAmountInclVAT": 119.49,
"docAmountVAT": 20.74,
"importSalesDocumentLines": [
{
"description":"Test regel 1",
"quantity":1,
"unitPrice":500
}
],
"importSalesDocumentImages": [
{
"fileName": "invoice.pdf",
"fileContent": "base64-encoded-pdf-content-here"
},
{
"fileName": "attachment.pdf",
"fileContent": "base64-encoded-pdf-content-here"
}
]
}
De documentImages array accepteert meerdere items met:
fileName: De bestandsnaam van de PDFfileContent: Base64-gecodeerde inhoud van het PDF-bestand
Deze worden opgeslagen als CFL Document Images en zijn zichtbaar in de document image factbox.
NOTE
Bedragen zijn altijd positief. Het documenttype duidt aan of dit een factuur of creditnota is.
NOTE
Indien het veld Service op true staat dan wordt de factuur/creditnota geboekt als een service factuur/creditnota.
Extra velden via API (BC 27.0+)
Vanaf Business Central 27.0 is het mogelijk om aanvullende veldwaarden mee te sturen bij het importeren van documenten via de nieuwe importSalesDocumentAdditionalFields API part. Dit maakt het mogelijk om velden in te vullen die niet standaard in de API zijn opgenomen.
Instelling
Voordat extra velden via de API kunnen worden gebruikt, moeten deze eerst worden geconfigureerd in de API Extra velden instelling pagina:
- Zoek naar API Extra velden instelling in Business Central
- Voeg een nieuwe regel toe met:
- Tabelnr.: Het tabelnummer van de doeltabel (bijv. 36 voor Sales Header)
- API veldnaam: De naam die in de API wordt gebruikt (bijv. "yourReference")
- Doelveldnr.: Het veldnummer in de doeltabel waar de waarde moet worden ingevuld
- Ingeschakeld: Zet op Ja om het veld te activeren
Gebruik
Voeg extra velden toe via de additionalFields array in de POST request:
{
"service": false,
"documentType": "Invoice",
"no": "201907049",
"customerNo": "1417",
"postingDate": "2019-06-14",
"documentDate": "2019-06-14",
"importSalesDocumentLines": [
{
"description": "Test regel 1",
"quantity": 1,
"unitPrice": 500
}
],
"additionalFields": [
{
"fieldName": "yourReference",
"fieldValue": "REF-2026-001"
},
{
"fieldName": "externalDocumentNo",
"fieldValue": "EXT-12345"
}
]
}
Extra velden op documentregels
Extra velden kunnen ook worden toegevoegd aan individuele documentregels via de importSalesDocumentLineAdditionalFields array:
{
"importSalesDocumentLines": [
{
"description": "Test regel 1",
"quantity": 1,
"unitPrice": 500,
"importSalesDocumentLineAdditionalFields": [
{
"fieldName": "itemCategoryCode",
"fieldValue": "FURNITURE"
}
]
}
]
}
NOTE
- De veldnaam in de API (
fieldName) moet exact overeenkomen met de geconfigureerde API veldnaam in de instelling - De waarde (
fieldValue) wordt automatisch geconverteerd naar het juiste gegevenstype van het doelveld - Niet-geconfigureerde of uitgeschakelde velden worden genegeerd
- Ondersteunde gegevenstypes: Text, Code, Integer, Decimal, Boolean, Date, Time, DateTime, GUID en Option
Bound Actions
Post
de API bevat een bound action genaamd post die de corresponderende import-fatuur/creditnota gaat boeken:
POST https://server address:server API port/server instance name/api/Dynamate/BoCountDynamics/v2.0/companies(companyid)/importsalesdocuments({id})/Microsoft.NAV.post
Het antwoord bevat geen inhoud, de code is 204.
Adhv. de velden createdDocType, createdDocSubType, createdDocNo en errorMessage kan nagegaan worden of dit succesvol was of niet.
Bij correcte boeking zijn de velden createdDocType, createdDocSubType, createdDocNo ingevuld en het veld "errorMessage* leeg.
Indien een fout is opgetreden tijdes boeken dan zijn de velden createdDocType, createdDocSubType, createdDocNo leeg en is het veld errorMessage ingevuld met de foutmelding.
Register
de API bevat een bound action genaamd register die de corresponderende import-fatuur/creditnota gaat registreren (omzetten in een niet geboekte factuur/creditnota):
POST https://server address:server API port/server instance name/api/Dynamate/BoCountDynamics/v2.0/companies(companyid)/importsalesdocuments({id})/Microsoft.NAV.register
Het antwoord bevat geen inhoud, de code is 204.
Adhv. de velden createdDocType, createdDocSubType, createdDocNo en errorMessage kan nagegaan worden of dit succesvol was of niet.
Bij correcte registratie zijn de velden createdDocType, createdDocSubType, createdDocNo ingevuld en het veld "errorMessage* leeg.
Indien een fout is opgetreden tijdens registreren dan zijn de velden createdDocType, createdDocSubType, createdDocNo leeg en is het veld errorMessage ingevuld met de foutmelding.
Reopen
de API bevat een bound action genaamd reopen die de corresponderende niet geboekte fatuur/creditnota gaat verwijderen en het import document terug gaat openen.:
POST https://server address:server API port/server instance name/api/Dynamate/BoCountDynamics/v2.0/companies(companyid)/importsalesdocuments({id})/Microsoft.NAV.reopen
Het antwoord bevat geen inhoud, de code is 204.
postpreview
de API bevat een bound action genaamd postpreview die de corresponderende een voorbeeld van boeking zal uitvoeren voor het aangemaakt document.:
POST https://server address:server API port/server instance name/api/Dynamate/BoCountDynamics/v2.0/companies(companyid)/importsalesdocuments({id})/Microsoft.NAV.postpreview
Het antwoord bevat geen inhoud, de code is 204.
Adhv. het veld errorMessage kan achteraf nagegaan worden of dit succesvol was of niet.
Bij correct voorbeeld van boeking is het veld errorMessage leeg.
Indien een fout is opgetreden tijdens registreren dan is het veld errorMessage ingevuld met de foutmelding.
CFL Import Sales Document Line API
APIPublisher = 'Dynamate';
APIGroup = 'bocountdynamics';
APIVersion = 'v2.0';
EntityName = 'importSalesDocumentLine';
EntitySetName = 'importSalesDocumentLines';
GET
Method: GET
https://server address:server API port/server instance name/api/Dynamate/BoCountDynamics/v2.0/companies(companyid)/importSalesDocumentLines(id)
entity:
{
"@odata.etag": "W/\"JzE5OzQyNDg0MDU5Nzk4NDQ2NjQ1MzQxOzAwOyc=\"",
"id": "481f0a70-ac2e-ed11-97e8-000d3a254c9a",
"documentType": "Invoice",
"documentno": "201907049",
"type": "G/L Account",
"no":"600000",
"vatBusPostingGroup": "BINNENLAND",
"vatProdPostingGroup": "G3",
"description": "Test regel 1",
"description2": "",
"quantity": 1,
"unitPrice": 500,
"lineDiscountAmount": 0,
"countryofOriginCode": "",
"deferralCode": "",
"tariffNo": "",
"shortcutDimension1Code": "",
"shortcutDimension2Code": "",
"shortcutDimension3Code": "",
"shortcutDimension4Code": "",
"shortcutDimension5Code": "",
"shortcutDimension6Code": "",
"shortcutDimension7Code": "",
"shortcutDimension8Code": "",
"allowPaymentDiscount":"true"
}
DELETE
Method: DELETE
https://server address:server API port/server instance name/api/Dynamate/BoCountDynamics/v2.0/companies(companyid)/importSalesDocumentLines(481f0a70-ac2e-ed11-97e8-000d3a254c9)
UPDATE
method: PATCH
https://server address:server API port/server instance name/api/Dynamate/BoCountDynamics/v2.0/companies(companyid)/importSalesDocumentLines(481f0a70-ac2e-ed11-97e8-000d3a254c9)
Headers:
"If-Match" : W/"JzE5OzQyNDg0MDU5Nzk4NDQ2NjQ1MzQxOzAwOyc="
Body:
{
"description": "TEST-aanpassing"
}
POST
Method: POST
https://server address:server API port/server instance name/api/Dynamate/BoCountDynamics/v2.0/companies(companyid)/importSalesDocumentLines
body;
{
"documentType": "Invoice",
"no": "201907049",
"type": "G/L Account",
"no":"600000",
"vatBusPostingGroup":"BINNENLAND",
"vatProdPostingGroup":"G3",
"description":"Test regel 1",
"quantity":1,
"unitPrice":500
}
CFL Import Sales Document Attachment API
APIPublisher = 'Dynamate';
APIGroup = 'bocountdynamics';
APIVersion = 'v2.0';
EntityName = 'importSalesDocumentAttachment';
EntitySetName = 'importSalesDocumentAttachments';
Beschrijving
Deze API wordt gebruikt om bijlagen toe te voegen aan geïmporteerde verkoopdocumenten. De bijlagen worden opgeslagen in de drag&drop folder structuur en zijn toegankelijk via de documentbijlagen.
GET
Method: GET
https://server address:server API port/server instance name/api/Dynamate/BoCountDynamics/v2.0/companies(companyid)/importSalesDocumentAttachments(id)
entity:
{
"@odata.etag": "W/\"JzE5OzcwNzE5MDcwMDI2Njc1Njg3OTMxOzAwOyc=\"",
"id": "ce970cac-f433-ed11-97e8-000d3a44bbc6",
"documentType": "Invoice",
"documentNo": "201907049",
"fileName": "attachment.pdf",
"fileContent": ""
}
DELETE
Method: DELETE
https://server address:server API port/server instance name/api/Dynamate/BoCountDynamics/v2.0/companies(companyid)/importSalesDocumentAttachments(id)
POST
Method: POST
https://server address:server API port/server instance name/api/Dynamate/BoCountDynamics/v2.0/companies(companyid)/importSalesDocumentAttachments
body:
{
"documentType": "Invoice",
"documentNo": "201907049",
"fileName": "contract.pdf",
"fileContent": "base64-encoded-file-content-here"
}
NOTE
- Het veld
fileContentmoet een base64-gecodeerde string bevatten van het bestand - Het veld
fileNamebevat de naam van het bestand (kan elk bestandstype zijn, niet alleen PDF) - De bijlagen worden opgeslagen in de drag&drop folder structuur
- Deze API kan gebruikt worden in combinatie met de hoofddocument API door meerdere bijlagen toe te voegen via de
importSalesDocumentAttachmentsarray
Voorbeeld met meerdere bijlagen in één POST:
{
"service": false,
"documentType": "Invoice",
"no": "201907049",
"customerNo": "1417",
"postingDate": "2019-06-14",
"documentDate": "2019-06-14",
"importSalesDocumentLines": [
{
"description":"Test regel 1",
"quantity":1,
"unitPrice":500
}
],
"importSalesDocumentAttachments": [
{
"fileName": "contract.pdf",
"fileContent": "base64-encoded-pdf-content"
},
{
"fileName": "specifications.xlsx",
"fileContent": "base64-encoded-excel-content"
}
]
}