Retrieve characters/Substring from string in Cloud Flows
In this blog we will see how to retrieve string or characters from string using substring and take method When we want to retrieve character/string from starting index then will use take() method, else will use substring() Let say we want to retrieve first 5 character from string. Eg. – string is Power Automate We will demonstrate this with both the cases. Using Substring Here we are retrieving first 5 characters from string i.e. Power Expression used – substring(‘Power Automate’,0,5) Output – 2. Using take Expression used to retrieve string – take(‘Power Automate’,5) Output – Hope this helps!
Share Story :
Customizing POS Receipt Layout
Introduction POS Receipts are generated after every transaction that occurs on POS. The default receipt provided by LS Central is generally sufficient but as is in all things there are always exceptions. There are two approaches we can use to modify the POS Receipts and we are going to see them both. This is the default receipt provided by LS. I have marked division of sections using color. Red – Header Green – Body Blue – Footer References https://www.archerpoint.com/blog/Posts/learn-how-set-pos-receipt-enhancements-ls-retail https://help.lscentral.lsretail.com/Content/How-Tos-Created-By-Support/How-To-Set-Up-Receipts-LS-Central.htm Pre-requisites Microsoft Dynamics 365 Business Central LS Central Development Environment Setup for Business Central Configuration Using Receipt Printing from POS Terminal / Store Card We can add text directly into the Header or the Footer of the POS Receipts and also define some basic properties like bold, italic or wide for the text. It can be defined at POS Level or Store Level i.e. for individual POS Terminals or for all the POS Terminals in a Store. Go to POS Terminal Card. Go to Printing -> Receipt Printing Here you add static content, like Store Name, GST/VAT No, Store Address, etc in both header and footer. Here you can also define, if you want to specify the Item No. or Barcode in the POS Receipt. Similar, to this, we can also define for Store level, i.e. all the POS Terminals in a Store. Using the “POS Print Utility” procedure: In this method, we will write actual code to modify the receipt. If you are using NAV, then this is pretty straight forward, but in case of Business Central, we only have access to Events which we can subscribe to, to change the behaviour of the procedure. The highlighted four procedures do the majority of the work done in printing. PrintHeader -> Prints the content of the header defined in the Receipt Printing. PrintSubHeader: It prints the Information related to the current Transaction. PrintSalesInfo: It prints the actual Items of the Transaction along with VAT and other details at the bottom. PrintFooter: It prints the Footer Text defined in the Receipt Printing. Now that we know which procedure is responsible for which part of the Receipt, we can subscribe to that procedure’s event. For example, let’s try me modify the “Sub Header” part of the Receipt. As such we need to modify the “PrintSubHeader” procedure, so we subscribe to its event. The parameter, sender gives us a reference to the current instance of “POS Print Utility” codeunit which we can use to call all the procedures of that codeunit with the correct values. TransactionHeader is the current “Transaction Header” record. At the start of the procedure, we need to set the IsHandled variable to True so that once your procedure ends, the parent “PrintSubHeader” procedure exits immediately. DSTR – It is the design String, here we define the design of the Line that will be printed. It is at max up to 40 characters. It follows the pattern “#(alignment)##…”. The Design String is divided into sections, each section contains one piece of data. Value – It is a text array, which defines the data which is to be printed in the sections. The number of values set in the Value should be equal to the sections in the design string. Node – It is used as a Label for the data in the section. The number of values in this array should be the same as the values in Value array. Next, the essential part is the “FormatStr” procedure, the 4 booleans at the end are used to specify whether the String is going to be Wide, Bold, High or Italic respectively. After this, the final piece of the puzzle is the “AddPrintLine” procedure, the first argument is the “Section ID”, it is related to which part of the receipt we are printing in, it is better to set it the same as the procedure from which this event is being triggered. Next argument, specifies the maximum number of Sections that will be in the design string, just make sure it is more than the values you have provided. Next, we pass the Node and Value array, the Design String and specify whether the String is going to be Wide, Bold, High or Italic and the Tray at the end. The value for Tray can be taken directly from the Event’s parameters. Similar to this, we will add one more line and then we will check the results. The “PrintSeperator” procedure is used to draw a horizontal line across the receipt using dashes. Here is the final result: Conclusion: Thus we saw how to customize POS Receipts in LS Central either through POS/Store Receipt Printing or for advanced customizations through Event subscriptions.
Share Story :
Use Microsoft Forms with Power BI Reports
Sometimes we would want to ask users about their thoughts , opinions or ask some questions along with a PowerBI report. That is, we would need to collect information about the user through PowerBI App. This can be done by creating a Microsoft Form inside PowerBI interface to collect user information. This can be demonstrated as: Go to forms.office.com and create a new form. Insert the Title , Description and add some fields in my case I have created a Test form with a field for giving ratings. Click on share and copy the link. Go to app.powerbi.com , create a new workspace and while creating enable develop a template app option Add your existing PowerBI reports here by clicking “New” option and then click on create app. You can add Name, description and logo to this app also you can choose a theme Click on Navigation tab and enable new navigation builder Click on the New button on the navigation pane and select link. Enter the Name of the form and enter Microsoft form link Publish the app then select go to app As you can see the form is embedded in PowerBI interface The responses done by users gets saved at forms.office.com This can be used in a scenario where we need feedback for a PowerBI report Hope this blog helped Note: Not all Power BI users can view and interact with apps. If you have a free license, you can open apps that are stored in Premium capacity and have then been shared with you. If you have a Pro license, you can open apps that have been shared with you.
Share Story :
Configuring Scheduled Jobs – Part II
Introduction: In the previous Blog, we saw how to configure the Schedule Job Header, this time we will configure the Sub-jobs. In Sub-jobs, we can define the Table structures to be followed, Tables the Data is supposed to be sent to, filters, replication counter fields and so on. References: Repl. Counter Interval, Scheduler Subjob (lsretail.com) From-Location Design, Scheduler Subjob (lsretail.com) Replication Method, Scheduler Subjob (lsretail.com) http://www.apanko.ru/showthread.php?t=3517 Pre-requisites: Microsoft Dynamics 365 Business Central LS Central Configuration: General:- ID:- Unique Identifier for the Sub-job. From-Location Design/To-Location Design:- These fields specify the structure of the tables. If the table structures are same in both sending and receiving locations, then you do not need to set this field. From-Table ID/To Table ID:- These fields specify the IDs of the tables. In most cases, these will be same only exception would be when you want to send data to custom Tables from BC/LS Tables. Replication Method:- It has two options- Normal :- In this method the entire table is transferred but as this is an expensive operation and unsustainable if the data in the table is growing constantly, there is another field “Replication Counter” which resides on the table which is to be transferred, it must be an integer field and every operation which modifies/inserts a record in the table, this replication counter field must be updated. Majority of tables provided by LS have a “Replication Counter” field in them. By Actions:- Every operation we perform on every table is logged into a “Preactions” table by LS. Then these Preactions are converted into “Actions” which are then used to transfer data. Field Transfer Type:- It specifies how to handle the fields of the table. It has three options- All:- All the fields from the “From Table” are transferred in the “To Table”. Include List:- Only the fields specified are transferred. Exclude:- All field except the ones specified are transferred. What to do:- It specifies the operations the transfer can perform. There are the basic operations Add, Update & Delete and then building on them there are combinations of these operations.Note:- Please use the delete operations carefully as it may cause unintended data deletion. For most uses, Update-Add is sufficient. Replication:– Action Table ID:- This field is automatically updated when “Replication Method” is set to “By Actions.” Move Actions:- Specifies whether “Actions” should be transferred along with Data. Use Truncate:- When using “Normal” replication method, if this is set to true, then the destination table is cleared and then new data is inserted in it from the source table. If you are using “Update-Add-Delete” as “What to do” then this is more efficient. Replication Counter:- Specifies which “Integer” field is to be used as the “Replication Counter.” Repl. Counter Interval:- If this value is set then the data to be transferred is divided into blocks. The size of the block is as defined in the field.For instance, as per the replication counter, 1000 records are to be transferred. But since sending a huge amount of data at once may burden the replicator we can specify the “Repl. Counter Interval” at 100, after which the “Sub-job” will run 10 times, replicating 100 records at a time. Update Repl. Counter:- Specifies whether the “Replication Counter” field in the destination table should be updated or not. Mark Sent Records:- In this field we can set a boolean field of the “Source Table” which will automatically be set to true, when the record is set. Please do note that none of the fields mentioned in the “Replication” tab are compulsory but creating a sub-job without using the available replication options may become slower and network intensive as entire tables are transferred. Transfer Field List: Go to Navigate > Sub-job > Transfer Field List Here we specify the field mapping between the source and destination tables. It also allows for some degree of Conversion in transferring, for instance, Set “Conversion Type” to “Constant” and set a value in the “Conversion String” field, then after transferring, the value specified in the “Conversion String” is set on all the records in the specified field. Make sure the field is of type “Text” or “Code” before using this. Another practical example would be, When transferring “User” table, if we simply send the password directly then the proper values are not transferred. This can be resolved by using “Skip Text Conv.” on the “Password” field before transferring. From-Table Filters: Go to Navigate > Sub-job > From-Table Filters Here we can specify filters to be applied to the source table. Linked Tables: Go to Navigate > Linked Data > Linked Tables Here we can specify data from which other tables has to be pulled along the main table, in the above example, as the sub-job is using data from “Customer” table, we have defined that along with that we also want data from “Customer Ledger Entry” table. We can also define field mapping for these tables by going to Navigate > Linked Table> Field List. To define the link and/or filters on this table, go to Navigate > Linked Table > Filters and Links. Conclusion: Thus, we saw how to configure Sub-jobs and a brief overview of the features it offers. Thanks for reading!
Share Story :
How to solve OLE DB or ODBC errors in PowerBI
Introduction: Sometimes while refreshing our dataset in PowerBI or importing new data from existing sources we may encounter OLE DB or ODBC errors as shown in the image below. This might be due to caching issues. To solve this follow the steps: Go to File tab on the ribbon in PowerBI Desktop , then click on About and check the PowerBI version, make sure it is the latest version if not update PowerBI. If PowerBI version is latest, click on the dropdown arrow below the Transform Data button. Click on Data source settings Click on Global Permissions Select the Data Source and click on Clear Permissions and click on close. Click on close and again select the data source as new and enter the credentials. This time the dataset would be loaded without errors. Hope this article helped
Share Story :
How to extract information from XML/HTML/FSON and convert it into PlainText in Canvas PowerApps without Flow
If you are curious about the data in XML/HTML/JSON and want to fetch data from it without flow. Here’s something what you can do There’s an inbuilt function in PowerApps that converts HTML/XML to string text. Function Name is ‘PlainText‘. But all tags are neglected and extracting certain data is difficult. Consider you want to extract a small size information which is in XML/HTML/JSON and don’t have time to write a flow. Here’s what you can do I have a XML data.Tip: When converting your XML/HTML to PlainText. It’ll show space and next line if you place tags correctly. Keeping in 1 line or no spaces will reflect in result which will look bad. I have created 2 buttons and 2 input text boxes. 1st button will set XML/HTML/JSON in a variable or collection 2nd button will check for next values if tag found. 1st and 2nd input Text Boxes represent start and end tags There are 3 main variables that we’ll use to iterate the values. Here TagFind, TagFind_End are 2 input text boxes and var1 is variable holding XML data. Find function finds data which is encountered once. Since it has starting point we define it to iterate to next search. Current and CurrentEnd will represent start and end point of tag.Next will determine next index to start searching from We will have 1 label to show our answer Here the text property has the formula that retrieves data within the start and end point of the tag. Finally you will achieve something like this, You can use this fetched data somewhere in your PowerApp. You can also use something similar to extract values in branched data form. In a certain range of data.For example; In above XML, i have ’employees’ as 1 tag determining contents in it.If i had Name tag in employees and Name tag in ‘Department’ then by range of ‘Employees’ or ‘Department’ i can fetch Name of that block only. Hope this idea helped.
Share Story :
How can you set one on one approval workflow in Business Central?
Introduction: One of the scenarios where you want the Person A approval request should be approved by Person B and Person B approval request should be approved by Person A. How to achieve this goal: Go to Workflows page I want to create a Purchase Order Approval Workflow from Templates. Go to New-> New Workflow from Template Then select the Purchase Order Approval Workflow from Workflow Templates Click on Add record restriction in the Response field Select the Create approval request option from the Response tab and then set the values Approve Type to be Approver and Approver Limit Type Direct Approver which means whoever is approver the request will go that user only. And then enable the workflow. Then now go to Approval User Setup where we are going to assign which user’s approval request will be sent to which user. Now I will assign my approval request should be sent to the manager and the manager approval request should be sent to me. Now let’s test it go to Purchase order I am currently in my account and send the approval request from Purchase Order Now my manager will get the request which I have sent. The manager will sign in on his account and then go to the Request to Approve page and approve the request which I have sent. And then once the request is approved by my Manager I will get the status as approved in Purchase order-> Orders-> Approval Let’s try vice versa as well repeat the same steps for the manager as well Now I will be able to see the request from the Manager in the Request to Approve Page Conclusion: Thus we saw how we can set the request approval to be send one on one in Business central Thank you very much for reading my work. Hope you enjoyed the article!
Share Story :
Control elements in PowerApps with different font-size
Its good to have a user’s choice based font-size but without controlling how it displays on screen may not look good. I have created a simple design that consists of a header, gallery and font-size slider to show how elements react on certain font size. Here’s how it looks. How to make this, Set your font-size range into slider or any other control element like dropdown.Set Title or any text as value of slider or dropdown and use increment or decrement as per requirement.For example: Header title is X then sub-header will be X-2 font-size. To make gallery change its style as per font-sizeSelect ‘Wrap-count’ property of gallery and insert formulaIf(Slider.Value > 25, 1, 2);This will make 1 column is font size is more than 25 else 2. You can create this on every control/elements that requires such change. Hope this helped.
Share Story :
Inventory lookup feature to be operational in 10.0.19 release of D365 Retail(Commerce)
As of now as a POS user if you want to check the inventory of an Item , you will need to click on the inventory lookup button on homepage and you will have to then enter the item number to display a list of store wise inventory. While this feature is useful, there is a need to check inventory directly from the cart itself. Microsoft has finally made this feature available. However, this will be available from 10.0.19 release. Once this feature becomes operational, you will need to add an ‘Inventory lookup’ button to the button grid. After adding a line to the cart you can select the any line and then click on inventory lookup button to check the stock for that particular item. If you select no lines and click on the inventory look up button you will see an empty form Hope this helps!
Share Story :
Database error on POS while adding products to cart in D365 Retail POS
This particular error ‘A database error has occurred’ took a very long time to resolve for us as neither us or Microsoft were able to figure out what was causing it. We verified and double checked following to resolve the issue but to no avail. I suggest you to first ensure the below things before you escalate it to Microsoft support team. Validate the created products Make sure product has category assigned. Ensure product is added to store assortment and assortment is published Process the assortment and all the jobs are in applied state If the issue still persists, then its possible the issue is with scheduler sub jobs. Check the InventTable. There should be 1040 job in the scheduled by Tab If its missing then go to 1040 jobs and then scheduler jobs and add Inventtable to it. Hope this helps!
