Category Archives: Blog
Sending Email in Business Central without SMTP Mail
Introduction With SMTP Mail being deprecated, Business Central now provides us with a new and enhanced way for writing custom logic to send emails. To use this new functionality you have to first configure Email Accounts in Business Central, which you can find here. Pre-requisites Business Central onCloud References Developing with the new enhanced email feature | Dan Kinsella Configuration The new method uses the Email Message (ID: 8904) and Email (ID: 8901) Codeunits. I’ve added multiple actions below and I’ll be describing what the expected behaviour is. This is the simple piece of code which sends an email with the specified Recipients, CCs and BCCs.We can specify multiple recipients and dynamically as the lists are not bound by size. We can also call a simpler version of this method, where we don’t need to specify the CC and BCC. Changing the “OpenInEditor” procedure of “Email” codeunit causes a page to be opened up where you can edit the message before you send it. You can also add attachments or you can save the message draft. Changing the “OpenInEditorModally” procedure of “Email” codeunit causes a page to be opened up (as “RunModal”) where you can edit the message before you send it. You can also add attachments or you can save the message draft. “SaveAsDraft” procedure saves the email as a draft and you can view it in the “Email Outbox” where you can make any changes if necessary and send it directly from there. You can also add attachments to the email directly from code. Conclusion Thus we saw how we can send emails in Business Central v20.
Share Story :
Blocking Items in LS Central from POS
Introduction LS Central has its own unique way of preventing Items from being sold which is different from the standard “Blocked” option field we get on the Item Card. It also comes with detailed and refined permissions which can fit most business needs. All of this is done using another related table known as “Item Status.” Pre-requisites: Business Central OnCloud/OnPrem LS Central v16 References: Item Status (lsretail.com) How to Block Items From Sale at the POS (navisiontech.com) Configuration Open the Item Card for the Item you want to block. Open the “Item Status” for that Item. Click on the “Status Code” and Click on “Select from full list.” Create a new record with code “BLOCKED” and enable all the fields. Here, you can see all the detailed controls available. Conclusion: Thus, we saw how we can Block Items on POS in LS Central and other finer controls available at our disposal in LS Central.
Share Story :
How to resolve Error: Report _ does not have a layout of type None
Introduction Have you ever faced the error: “Report ___ does not have a layout of type None.” Here’s how you can resolve it. Pre-requisites Business Central OnCloud/OnPrem References https://community.dynamics.com/business/b/think-about-it/posts/how-do-i-fix-error-report-x-does-not-have-a-layout-of-type-none Configuration With the earlier versions of Business Central, you were allowed to run a report without specifying a layout, even if it was not a processing only report. However with the recent version of Business Central it is mandatory to specify both the “DefaultLayout” and the path to the layout via the “RDLCLayout” or “WordLayout” or “ExcelLayout” properties. Once these properties are the defined the error is resolved. Furthermore you can also resolve this error by using the report rendering section which has been made available since runtime 9.0. However be sure to define the “DefaultRenderingLayout” property for the report to specify which of the layouts defined should be considered as default. Conclusion: Thus we saw how we can resolve the error: “Report ___ does not have a layout of type None.” Happy Coding!
Share Story :
Using Dialogs to enhance User Experience in Business Central
Introduction We’ve all faced situations where we’ve had an operation take a long while which made the User wonder whether the system is stuck with something or is still processing. We can use simple dialogs which can enhance the User experience by showing User the progress of the operation. Some Business Central operations have out of the box dialogs which indicate progress like Posting documents or entries, Running reports with large data sets. Pre-requisites Business Central OnCloud/OnPrem References Dialog Data Type – Business Central | Microsoft Docs Dialog.Open(Text [, var Any,…]) Method – Business Central | Microsoft Docs Configuration While using the Dialog for creating windows, there are 3 procedures that we are going to be using. Open – It creates the window which we will be displaying the messages in. Update – It updates the content of the window based on the values that we pass in it. Close – It closes the window. We can create a simple Progress Window using the below piece of code. And this is the result for it. Please note that because there were two # in the Label, system has broken them into two separate lines. To avoid creating multiple lines within a single dialog box, we can use the StrSubstNo procedure which compresses the number of updates that we call to 1. We can now see that the content is visible in a single line. In Business Central 14 or previous versions of Business Central (which used windows client) it was possible to show the progress indicator in percentages using native APIs, however this functionality is not supported in Web Client. However we can still simulate it using text and creating our own basic procedure which converts the values to a String which will be used to indicate the progress. Conclusion: Thus we saw how we can use Dialogs to enhance User Experience and allow Users to visualize the processing of some long running task.
Share Story :
How to Create Inventory Period in Business Central.
Inventory periods are used to keep track of when inventory adjusting entries are posted. Unless inventory periods are closed on a monthly basis, adjusting entries will post in the same period as the original transaction. Inventory adjustments will not be posted in that period if you create and close inventory periods. If the initial transaction was posted during a closed inventory period, the adjustments’ value is posted on the first day of the first open inventory period. This ensures that once the financial statements have been printed for a month, the G/L value of inventories, costs, and cost of goods sold do not change. CREATING INVENTORY PERIOD Many companies manage inventory the same time they manage accounting Period. Steps to access inventory period: Go to ‘Accounting Period’ Click on ‘Process’, there you find ‘inventory period’ OR You can simply Go to ‘Inventory Period’ from Global Search. STEPS TO CREATE AN INVENTORY PERIOD. Click On the search icon and enter Inventory Period, select relevant link. Create a new line In the Ending Date Field, enter the last date in the inventory period that you want to define. When the period is closed, you will not be able to post inventory changes before this date. Enter a descriptive name in the Name field. CLOSING INVENTORY PERIOD. The Closed parameter specifies whether the inventory period is closed to changes in inventory value. This field is not editable. You can close any inventory period if the following conditions are met In that time period, there are no open outbound item ledger entries, showing negative inventory. The Adjust Cost – Item Entries batch job was used to adjust the cost of all goods. This means that any outbound transaction quantities must be applied to existing inventory numbers, such as those from sales orders, outbound transfers, sales invoices, buy returns, or purchase credit notes. TO CLOSE AN INVENTORY PERIOD Before closing an inventory period, choose the Adjust Cost – Item Entries action to ensure that all cost adjustments are posted.Run the Close Inventory Period – Test report to determine if there are any open outbound item entries within the inventory period or any items whose cost has not yet been adjusted. Choose the Close Inventory Period – Test action.Run the Post Inventory Cost to G/L batch job to ensure that all costs are posted to the general ledger. Choose the Post Inventory to G/L action. On the Inventory Periods page, select the inventory period you want to close. Choose the Close Period action. After the inventory period has been closed, you cannot post inventory changes before the ending date. The cost of all items must be adjusted with the Adjust Cost – Item Entries batch job before you close the inventory period. Choose the Yes button to confirm that you want to close the period, or choose No to cancel the closing. The inventory period is closed and a confirmation message is displayed when it is finished. REOPEN INVENTORY PERIOD It is not possible to delete an inventory period once it has been closed. You can, however, reopen it if you want to allow posting before the inventory period’s expiration date. When you reopen a period, it also reopens other inventory periods with ending dates later than the reopened period. TO REOPEN AN INVENTORY PERIOD Choose the icon, enter Inventory Periods, and then choose the related link. Select the inventory period you want to reopen. Choose the Reopen Period action. Confirm that you want to reopen the period. All inventory periods with ending dates later than the period you selected are reopened. Thank you for reading. Hope this helped. 🙂
Share Story :
Undo Bank Reconciliation in Business Central.
If you find a mistake in a posted bank reconciliation, you can correct it using the Undo action on the Bank Acc. Statement page. Steps to undo a Bank reconciliation: 1. Go to ‘Bank Account’ from the global search icon. 2. Select the bank account for which you want to undo the statement. 3. Open the Bank account Card Page, select ‘Bank Account’ and then ‘Statement’ 4.Select the statement for the bank account reconciliation that you want to reverse, and select Undo. 5. Select Yes When you undo a previously posted bank reconciliation, the entries are relocated to the Bank Reconciliation page and are marked as Open, indicating that they have not been reconciled. The bank reconciliation can then be corrected and re-posted. The bank account card provides the bank statement number and the balance from the last bank reconciliation. This indicates that the new bank reconciliation has a different number than the cancelled one. You can use the Change Statement No. action on the Bank Acct. Reconciliation page to use the same number as the cancelled bank reconciliation. Follow these steps to modify the number of a bank account reconciliation: 1. Go to Global Search icon and type in Bank Account Reconciliation, and then select the relevant link. 2.Change Statement No. after selecting Actions. 3. Enter the number you want to use in the New Statement No. area, then click OK. The Last Statement No. and Balance Last Statement fields on the bank account card are updated after the bank reconciliation is posted. This means that if the bank reconciliation you just completed isn’t the most recent, you may need to manually edit the Last Statement No. and Balance Last Statement fields on the bank account card. Thank you. Hope this helps! 🙂
Share Story :
How to Create a collapsible Gallery control in Canvas Power App
In this blog, I am going to show how we can create a collapsing and retracting gallery control in Canvas Power app. Let’s start making this into our Canvas PowerApps Step 1: Insert a Flexible Height Gallery on the screen. For the current example, I’m using a table of User details. Items property of Gallery Step 2: Adding a ‘button’ which is stay visible all time and a ‘Container’ which will only be visible when that specific record is selected. Step 3: Adding variables to store information of selected record unique ID. OnSelect property of Button, Visible property of Container, Step 4: Modify as you like, I’ve added color indication which record is selected. That’s all, We have finally created the collapsible Gallery control in Power App. Hope this helps!!
Share Story :
How to Dynamically Filter Multi-Select Option set/Picklist in D365 CRM using JavaScript
In this blog, I am going to show how we can filter a field (multi-select option set) item dynamically based on another field (single-select option set) item. Let’s consider a use case, We have a field named ‘Application Area’ which is a (single-select option set) field and ‘Application Type’ which is a (multi-select option set) field. Let’s have a look at JavaScript where the magic is making this possible. Step 1: Below is the entire code of JS For Table/Entity Main Form customization, select ‘Form Properties’ to include JavaScript function as below, On Load: oApplicationAreaType.Main On Change of field ‘Application Area’: oApplicationAreaType.getDetails Note: Pass the execution context for calling the JS function. That’s all, we have created a dynamic filtering of multi-select option set using JavaScript. Hope this helps!!
Share Story :
To show validation on a field using Regex Expression
In this blog, I am going to show how we can display a validation on the field if the entered text is not in the required format Let’s consider a use case, We have a field name ‘DMV Initial License’ which is a single line of text field. When text is entered the Date format for this field should be MM/YYYY Let’s have a look at JavaScript where the magic is making this possible. Step 1: Regex Expression for Date in the required format MM/YYYY – date_regex = /^(0[1-9]|1[0-2])\/[/]?([0-9]{4})$/ Step 2: Below is the entire code of JS For Table/Entity Main Form customization, select ‘Form Properties’ to include JavaScript function as below, On Change of field ‘ DMV Initial License ’: oCustomerFormCustomization.checkDateFormat Note: Pass the execution context for calling the JS function. Hope this helps!!
Share Story :
How to throw validation notification on Fields residing in Form Header
Hi All, Have you tried setting Field level notification on the Form Header of the Record? Let’s consider an example, We have an Estimated Revenue field which should never be set a $0.00. Therefore, we must throw a notification error based on this validation. The formula for setting field level notification is generalized as follows, Now let’s see how this general formula changes based on the field’s location set on the Form. If Field is located on the Form Formula will be: If Field is located on the Form Header Formula will be: If Field is located on the Form Business Process Flow (BPF) Formula will be: Hope this helps!!
