Sunday, 6 March 2022

On/Off text Indicator for Boolean fields

Business Central 2022 Wave 1 comes with a text indicator besides Boolean fields

 

Business Central 19.4 build


 

Business Central 20.0 (Preview)



Saturday, 5 March 2022

How to create a Preview environment for Business Central 2022 Wave 1

Microsoft announced the availability of Business Central 2022 Wave 1 preview availability.

 

Open the Business Central admin center

https://businesscentral.dynamics.com/<yourtenantid>/admin

 

Click on New in the environments


 

Select Environment Name (ex: preview2022w1us)

 

Type as Sandbox

 

Select Country (ex: US)

 

Version as 20.0.36751.0 (Preview)

 

Click Create

 

Click Yes on the confirmation message

 


Wait for a couple of minutes till the state is Active

 


Open the Sandbox and test all your PTEs and solutions



Sunday, 27 February 2022

Apply multiple invoice entries against a payment entry through APIs in D365 Business Central


Step 1: Get the Payment Journal Batch that we want to use in Business Central

We can get Payment Batch details using vendorPaymentJournals API

 

{

  "@odata.context": "https://api.businesscentral.dynamics.com/v2.0/8f0f6868-04b3-4834-8f54-49b21664eb18/Sandbox/api/v2.0/$metadata#companies(e93b67c5-78f1-ea11-bb43-000d3a2e8412)/vendorPaymentJournals",

  "value": [

    {

      "@odata.etag": "W/\"JzQ0O0R2KzNtQjdWREIybjJRRnV5b1hFVG44b3NqNlZqbDVVWVNHUWtQNzZ4L2c9MTswMDsn\"",

      "id": "30e08afa-78f1-ea11-bb43-000d3a2e8412",

      "code": "CASH",

      "displayName": "Cash receipts and payments",

      "balancingAccountId": "00000000-0000-0000-0000-000000000000",

      "balancingAccountNumber": "10100",

      "lastModifiedDateTime": "2020-09-08T02:14:48.853Z"

    },

    {

      "@odata.etag": "W/\"JzQ0O0k4MlhkK29tK0w3STdOVE40dzdZRHhuTHNpSnppVTVJVWcxRTcvdjNSOWs9MTswMDsn\"",

      "id": "32e08afa-78f1-ea11-bb43-000d3a2e8412",

      "code": "GENERAL",

      "displayName": "GENERAL",

      "balancingAccountId": "00000000-0000-0000-0000-000000000000",

      "balancingAccountNumber": "10100",

      "lastModifiedDateTime": "2020-09-08T02:14:48.86Z"

    },

    {

      "@odata.etag": "W/\"JzQ0O3pzQXAxMGt6bFVDN3ZUSlJQY1I0Zk0rOEFBY1NUUVhQM2dqelFqTEZHNEU9MTswMDsn\"",

      "id": "34e08afa-78f1-ea11-bb43-000d3a2e8412",

      "code": "PMT REG",

      "displayName": "Bank Reconciliation",

      "balancingAccountId": "00000000-0000-0000-0000-000000000000",

      "balancingAccountNumber": "CHECKING",

      "lastModifiedDateTime": "2020-09-08T02:14:48.87Z"

    }

  ]

}

I am going to use General Batch from the above list

      "id": "32e08afa-78f1-ea11-bb43-000d3a2e8412",

      "code": "GENERAL",

 

 

Step 2: Create a payment entry in Payment Journal using APIs

We can use vendorPayments API for this along with vendorPaymentJournals API

 

Body of the Post command

{

  "journalId": "32e08afa-78f1-ea11-bb43-000d3a2e8412",

  "vendorNumber": "10000",

  "documentNumber": "323",

  "externalDocumentNumber": "125",

  "amount": 2000,

  "description": "apply entries"

}

 

Response

 

{

  "@odata.context": "https://api.businesscentral.dynamics.com/v2.0/8f0f6868-04b3-4834-8f54-49b21664eb18/Sandbox/api/v2.0/$metadata#companies(e93b67c5-78f1-ea11-bb43-000d3a2e8412)/vendorPaymentJournals(32e08afa-78f1-ea11-bb43-000d3a2e8412)/vendorPayments/$entity",

  "@odata.etag": "W/\"JzQ0O1ZCVUNIQVVGTnBEM2l4aHVIOUZzczg0a0crNlh2TTlvQVpGbXJoZVBHR1E9MTswMDsn\"",

  "id": "b3897612-e097-ec11-80f1-002248290747",

  "journalId": "32e08afa-78f1-ea11-bb43-000d3a2e8412",

  "journalDisplayName": "GENERAL",

  "lineNumber": 10000,

  "vendorId": "c6ec91f4-78f1-ea11-bb43-000d3a2e8412",

  "vendorNumber": "10000",

  "postingDate": "2022-02-27",

  "documentNumber": "323",

  "externalDocumentNumber": "125",

  "amount": 2000.00,

  "appliesToInvoiceId": "00000000-0000-0000-0000-000000000000",

  "appliesToInvoiceNumber": "",

  "description": "apply entries",

  "comment": "",

  "lastModifiedDateTime": "2022-02-27T15:15:18.987Z"

}

 

 

We can find the Payment entry in Business Central page

 


 

Step 3: Apply the above payment against multiple existing invoices in Business Central

We can get the open Vendor Entries details using applyVendorEntries API along with above VendorPaymentJournals and vendorPayments

 

{

  "@odata.context": "https://api.businesscentral.dynamics.com/v2.0/8f0f6868-04b3-4834-8f54-49b21664eb18/Sandbox/api/v2.0/$metadata#companies(e93b67c5-78f1-ea11-bb43-000d3a2e8412)/vendorPaymentJournals(32e08afa-78f1-ea11-bb43-000d3a2e8412)/vendorPayments(b3897612-e097-ec11-80f1-002248290747)/applyVendorEntries",

  "value": [

    {

      "@odata.etag": "W/\"JzQ0O0FuSldSUCt1NHhvY044aThWZjhicUI5T2RmYWxuYmhDNFhDVE9zdnZzSm89MTswMDsn\"",

      "id": "ce27de32-4514-eb11-bbf7-000d3a9b9997",

      "applied": false,

      "appliesToId": "",

      "postingDate": "2020-04-06",

      "documentType": "Invoice",

      "documentNumber": "108211",

      "externalDocumentNumber": "107215",

      "vendorNumber": "10000",

      "vendorName": "",

      "description": "Invoice 107215",

      "remainingAmount": -1069

    },

    {

      "@odata.etag": "W/\"JzQ0O29NSkJma2tXQWNPOUdBd2RtVExLZHVxdXRaMjQ0c1JabEJaeE1rM0NqNjg9MTswMDsn\"",

      "id": "d7dd2968-5514-eb11-bbf7-000d3a9b9997",

      "applied": false,

      "appliesToId": "",

      "postingDate": "2020-04-06",

      "documentType": "Invoice",

      "documentNumber": "108212",

      "externalDocumentNumber": "107216",

      "vendorNumber": "10000",

      "vendorName": "",

      "description": "Invoice 107216",

      "remainingAmount": -690

    },

    {

      "@odata.etag": "W/\"JzQ0OzcvcU1pSDZMRkZjR1BqbjNOdDllSnhSY1lMOXAyS2w1TlBudzU1T1FCd0E9MTswMDsn\"",

      "id": "a4145e6f-5514-eb11-bbf7-000d3a9b9997",

      "applied": false,

      "appliesToId": "",

      "postingDate": "2020-04-06",

      "documentType": "Invoice",

      "documentNumber": "108213",

      "externalDocumentNumber": "107217",

      "vendorNumber": "10000",

      "vendorName": "",

      "description": "Invoice 107217",

      "remainingAmount": -460

    },

    {

      "@odata.etag": "W/\"JzQ0OzFmdG5obUdMOFhzV1NOSjFpaS9zR1psM2ZuRUxTNncxbnJCaVVDYkQrR1k9MTswMDsn\"",

      "id": "3a6bed91-8714-eb11-bbf7-000d3a9b9997",

      "applied": false,

      "appliesToId": "",

      "postingDate": "2020-04-06",

      "documentType": "Invoice",

      "documentNumber": "108214",

      "externalDocumentNumber": "107218",

      "vendorNumber": "10000",

      "vendorName": "",

      "description": "Invoice 107218",

      "remainingAmount": -230

    },

    {

      "@odata.etag": "W/\"JzQ0O1pEOWpLU0JFS3k5SnEwdzc3Z0VOL21ZTEZub1BRRTlZZStOT0g1aTJmRTQ9MTswMDsn\"",

      "id": "15c60da4-8714-eb11-bbf7-000d3a9b9997",

      "applied": false,

      "appliesToId": "",

      "postingDate": "2020-04-06",

      "documentType": "Invoice",

      "documentNumber": "108215",

      "externalDocumentNumber": "107219",

      "vendorNumber": "10000",

      "vendorName": "",

      "description": "Invoice 107219",

      "remainingAmount": -230

    },

    {

      "@odata.etag": "W/\"JzQ0O21VcEpndldlenZRdG1teXllbi9OcGRUQnFSWmVldlBwVDBFejlBVFkrYnc9MTswMDsn\"",

      "id": "d6366f3e-8a14-eb11-bbf7-000d3a9b9997",

      "applied": false,

      "appliesToId": "",

      "postingDate": "2020-04-06",

      "documentType": "Invoice",

      "documentNumber": "108216",

      "externalDocumentNumber": "107220",

      "vendorNumber": "10000",

      "vendorName": "",

      "description": "Invoice 107220",

      "remainingAmount": -230

    },

    {

      "@odata.etag": "W/\"JzQ0O1hzNHhuSWdFU2U5NHI3dXd5dEJZdzg5VXh0MmM1QnRrajg4Qm5SQlluMDQ9MTswMDsn\"",

      "id": "a8e34451-8a14-eb11-bbf7-000d3a9b9997",

      "applied": false,

      "appliesToId": "",

      "postingDate": "2020-04-06",

      "documentType": "Invoice",

      "documentNumber": "108217",

      "externalDocumentNumber": "107221",

      "vendorNumber": "10000",

      "vendorName": "",

      "description": "Invoice 107221",

      "remainingAmount": -230

    }

  ]

}

 

Now, I would like to apply the above payment against invoices 108211 and 108212 which have remaining about as 1069 and 690 respectively.

 

Before that let’s check the apply entries page in Business Central

 



Now call the below Patch APIs

https://api.businesscentral.dynamics.com/v2.0/8f0f6868-04b3-4834-8f54-49b21664eb18/Sandbox/api/v2.0/companies(e93b67c5-78f1-ea11-bb43-000d3a2e8412)/vendorPaymentJournals(32e08afa-78f1-ea11-bb43-000d3a2e8412)/vendorPayments(b3897612-e097-ec11-80f1-002248290747)/applyVendorEntries(ce27de32-4514-eb11-bbf7-000d3a9b9997)

 

Don’t forget to add header “If-Match” as *

 



Body as

{

  "applied": true

}

Response:

{

  "@odata.context": "https://api.businesscentral.dynamics.com/v2.0/8f0f6868-04b3-4834-8f54-49b21664eb18/Sandbox/api/v2.0/$metadata#companies(e93b67c5-78f1-ea11-bb43-000d3a2e8412)/vendorPaymentJournals(32e08afa-78f1-ea11-bb43-000d3a2e8412)/vendorPayments(b3897612-e097-ec11-80f1-002248290747)/applyVendorEntries/$entity",

  "@odata.etag": "W/\"JzQ0O2szUE5KRGVUeXZ3VVQzK0U5RE5KaFFlN3BobGFBL0YyRmVmSlBmR3lLcTA9MTswMDsn\"",

  "id": "ce27de32-4514-eb11-bbf7-000d3a9b9997",

  "applied": true,

  "appliesToId": "323",

  "postingDate": "2020-04-06",

  "documentType": "Invoice",

  "documentNumber": "108211",

  "externalDocumentNumber": "107215",

  "vendorNumber": "10000",

  "vendorName": "",

  "description": "Invoice 107215",

  "remainingAmount": -1069

}

 

Now verify in Business Central

Applies-to ID field will have Payment Document No. field



Execute 2nd API call with 2nd Invoice

https://api.businesscentral.dynamics.com/v2.0/8f0f6868-04b3-4834-8f54-49b21664eb18/Sandbox/api/v2.0/companies(e93b67c5-78f1-ea11-bb43-000d3a2e8412)/vendorPaymentJournals(32e08afa-78f1-ea11-bb43-000d3a2e8412)/vendorPayments(b3897612-e097-ec11-80f1-002248290747)/applyVendorEntries(d7dd2968-5514-eb11-bbf7-000d3a9b9997)

 

Response:

{

  "@odata.context": "https://api.businesscentral.dynamics.com/v2.0/8f0f6868-04b3-4834-8f54-49b21664eb18/Sandbox/api/v2.0/$metadata#companies(e93b67c5-78f1-ea11-bb43-000d3a2e8412)/vendorPaymentJournals(32e08afa-78f1-ea11-bb43-000d3a2e8412)/vendorPayments(b3897612-e097-ec11-80f1-002248290747)/applyVendorEntries/$entity",

  "@odata.etag": "W/\"JzQ0O2x2eGF3aFBCeTl3WjlSZ1RrbUQrc09GSGVVZEZ6RmozM0NoL3pvQk11YlU9MTswMDsn\"",

  "id": "d7dd2968-5514-eb11-bbf7-000d3a9b9997",

  "applied": true,

  "appliesToId": "323",

  "postingDate": "2020-04-06",

  "documentType": "Invoice",

  "documentNumber": "108212",

  "externalDocumentNumber": "107216",

  "vendorNumber": "10000",

  "vendorName": "",

  "description": "Invoice 107216",

  "remainingAmount": -690

}

 

Verify in Business Central.



Second invoice line also has Applies-to ID as payment document no.

 

Step 4: Post the payment journal in Business Central

 



 

Go to Vendor Ledger Entries and verify the application

Payment Entry



Click on Applied Entries

 



Notice that 2 invoices are applied to the payment