Correct Posted Purchase Invoices – Dynamics 365 Business central
Introduction : This functionality helpful to correct posted Purchase invoice if user make mistake or want to do any changes. You cannot correct posed purchase invoice which are partially or fully paid. Steps: In search bar enter Posted Purchase Invoice and chose the related link. Select and open Posted Purchase Invoice which you want to correct. Click on correct button on Posted Purchase Invoice form. Once you click on correct then you will get below pop up. Choose yes to continue. New Purchase Invoice with same information will be created. Make the changes whichever are required and click on post button to post purchase invoice. In Posted Purchase Invoices form, you can check new posted purchase invoice. Choose Show Corrective Credit Memoto view the posted purchase credit memo that voids the initial posted purchase invoice. Conclusion: This feature reduce the effort of users to create manual credit memo and again create new purchase invoice.
Share Story :
Actual vs Estimated hours myth
Introduction: All these years, I was calculating ‘Actuals’ as the billable hours on the project with the chargeable role. It was a myth that I continued to believe until I stumbled upon the solution that potentially demystifies this myth in PSA itself. Description: Below is how PSA helped to resolve this complex situation and this is how I cleared my understanding towards Actuals vs Estimated in PSA. In the project, I observed that the project was estimated to be a short project of 22 hours and the ‘Actuals’ were of 24 hours. Thereafter, I decided to dig deeper into it to understand the issue of these 2 additional hours, as this was not a big project and getting the additional 2 hours mistake would be very easy. To fix this, below are the actions that I followed: I accessed the Actuals from Project–> Project Name–> Actuals, as shown in the screen shot below. In the grid there, I sorted the “cost” aspect and calculated the number of hours which turned out to be 24. This was strange for me. Then I looked at the “Resource Role” column in the grid and found a 2-hour entry under the Non-Billable role. I pondered why these 2 hours Non-Billable hours are getting summed up in the actuals. But, if thought correctly, even the Non-Billable hours spent by the Resource is an Actual cost to the company. Conclusion: In this way, I could clear the air of confusion surrounding this and for my project budget calculations, I got another field created in the form named billable hours and calculated the sum of all the chargeable roles hours in that field. This now gave me all the three i. e Actuals, Estimated and billed hours in one go. Microsoft Dynamics 365 PSA is the next generation of cloud-based systems which provides an overview of business processes from Sales, Project Management, Customer Service and Fields Service.
Share Story :
Custom Transformation Rule for ACH using AL Extension in Business Central
Introduction: Dealing with Electronic Bank Payment Setup can be tedious and time consuming. In this blog, I’ve a unusual requirement where the payment date should be the next day of the check issue date. Pre-requisite: 1. Microsoft Dynamics Business Central 2. VS Code and AL Language Extension Demonstration: 1. In standard Data Exchange Definition, I didn’t find any rule to increment the date by 1 day. So using the Integration Event and Event Subscriber, I’ve written AL Code to use the custom transformation rule and perform the +1D operation. 2. I’ve created a custom Transformation Rule in the Feild Mapping on Data Exchange Definition in this case ‘ADD1D’ and set in the field mapping. 3. In the code I’m looking for the transformation rule with the name ‘ADD1D’ and then use the code to actually add 1 day to the date. Code: 4. Output: Conclusion: This type of customization not only can be done with Data Exchange Definitions. This was an example of how the Integration-Event Subscriber can be used to modify existing functionality in Business Central
Share Story :
Copying above field data using F8 key in D365 Business Central
One of the most useful shortcuts of copying above field data into new field using F8 key which was present in NAV Windows client is now available in D365 Business Central. Users can just click F8 and the data on the field above the selected field will be copied into that field. This will save lot of time specially in case of data entry.
Share Story :
How to Display Custom Entity in D365 Field Service Mobile App
D365 For Field Service provides everything you need from optimized work order scheduling to predictive maintenance. While you may have used Microsoft Dynamics 365 for Field service, very few may know about the actual steps required to display Custom Entity in D365 Field Service Mobile App. Let’s see how to display Entity in D365 Field Service Mobile App. 1. Find Entity by using Quick Find feature in Woodford. 2. Select Entity and Click Enable Button. 3. Enable Fields on Entity. Open Fields Section Select Fields to be exposed Click Save button 4. Create Form for Entity. Open Form Section on Entity. Click New Button for Form. Enter Name for Form and click OK. Select fields for display by clicking “Add Field” menu. Design form as per need by dragging fields from Fields Section and click Save & Close button. 5. Create View for Entity. Click View Section. Click New Button. Enter Name for View and Click Ok button. Design View as per need by dragging fields from Fields Explorer Section and click Save & Close button. 6. Display Entity in Home. Open Home tab. Drag Entity from Available Items Section to Home Section. Click Save button. 7. Publish the Solution. Conclusion: Hope the above description explains clearly about the Entity in D365 Field Service Mobile App. There are endless possibilities to what D365 Field service Mobile App can do and displaying entity is just one of them. D365 Field Service is one of the greatest applications that is capable of improving business capabilities and increase efficiency to the highest level.
Share Story :
Steps to Import Power BI Custom Visual
Introduction: There are plenty of different custom visuals available outside of Power BI that can be used by anyone to develop some powerful visuals for free. These visuals can be downloaded from the Power BI AppSource marketplace and added in your reports. All of these visuals have also be approved by Microsoft. Steps to Download a Custom Visual: Following are the steps to download and use a Power BI Custom Visual in Power BI Desktop: Open the AppSource and select Power BI Visuals For this demonstration, I will be downloading the Dial Gauge which is a custom visual developed by CloudFronts Select on Get it now(You will have to log in with your Microsoft email id) . A pbiviz file will be downloaded. Open your Power BI Desktop and select on the ellipses in Visualizations. Click on import from file and open the pbiviz file you just downloaded. The visual should be visible with your other visuals now To get a little more familiar with the report, you can download the sample report available with the visual on AppSource. This will download a pbix report. The sample report would look something like this. I hope this blog helps you get started with Power BI Custom Visuals. Do check out our Custom Visual DialGauge as well!
Share Story :
Chargeability view substitute in PSA V3
Introduction: In recent deployments of Dynamics 365 Project Service Automation (PSA) V2 for customers, I’ve come to rely on the chargeability view as a way to modify a quotation and reach the appropriate pricing for a project. In V3, PSA has abandoned the chargeability view. But no need to worry, I will show you how to accomplish the same thing with customer pricing in PSA V3! Steps: Let’s take the example of a quotation I have prepared for the Rotary Club. They need CRM to be implemented. By default, the price list that gets tagged comes from the opportunity that we create or the one that we tag with the quotation. Let’s check the price of a developer in the default price list in the screenshot below. Here, the default price that it shows is $1,250. I built a quotation to the customer based on my default sales price list. Below is what it looks like. The quote now is $12,500 ($1250 x 10 quantity) for 10 hours of requirement gathering. After submitting the quotation to the customer, they came back with a request to reduce the pricing. Now how do we achieve this in V3 which lacks the chargeability view of V2? In V3 we will need to follow these steps: 1. Open the quote 2. Click on “Project Price Lists” as shown in the below image: 3. Click on Create Custom Pricing and PSA creates a custom price list for the quote where you can store the negotiated price like you used to do in chargeability view. 4. Open the price list by clicking on it. There you can navigate to role prices. Select the line on which you want to update the price and click on the edit button that comes up in the header of the grid. Then you can proceed to update the prices based on what you have negotiated. To post the updated prices, click on the activate button. The sequence is shown in the image below. Overall, the process tends to be pretty intuitive. 5. Navigate back the Quote line and follow one more final step: If you open the Quote line details to see if the prices have been updated, you will see that the prices are still the same as the old entries. In order to reflect the new updated roll prices, open the line, go to remove the roll, and re-enter the roll to fetch the updated price. The updated quote with the updated price looks like this: And with that, you have achieved the functionality. Conclusion: Microsoft Dynamics 365 for Project Service Automation enables companies to deliver projects more productively and profitably with higher client satisfaction. Even though PSA V3 has eliminated the chargeability view, it is still possible to access the view in a much simpler way.
Share Story :
Assign your D365 records but keep access as well
Introduction: At times, you are asked to assign certain CRM records to other users and you just have to do it as a part of the process. But let’s face it, you still wonder what might have happened to the record after you assigned it to them but your security roles won’t let you access those. There’s a general D365 setting for this too! You can share your D365 records with other but still retain rights to yourself so keep track of what happened with those later on System Settings: Navigate to Settings > Administration > System Settings In General tab, look for the Setting where it reads as ‘Set whether reassigned records are shared with the original owner’ (quite self-explanatory) Assign Record and check Share Rights: Now, assigning a records from Priyesh to John as shown below – Priyesh would still have rights to the record. Check the Share status of the same. The record will be owner by John but will be shared with Priyesh too. Hope this is helpful!
Share Story :
Delegated Resource error for making time entries in D365 PSA 2.x version
Have you been added as a Delegate for a fellow colleague but not able to Read, Create or Submit Time Entries on their behalf? Let us see what you are missing. Scenario: William Contoso wants to make Veronica Quek as his Delegate and let her enter time on his behalf. Let’s say William added Resource Veronica Quek as the Delegate above. Error for the Delegate Resource: Now, Veronica is attempting to do time entries for William by going to Time Entry Calendar view and switching the user to William. And when Veronica wants to enter time as William, she’d switch to the User on the Time Entries Calendar View like this – But, see this error and she don’t know what the issue might be. Even though she’s the Delegate! Missing Security Role: Yes, this is the first thing you should check. Veronica Quek is missing a Delegate Security Role in PSA to be able to make time entries on behalf of other users. Assign Delegate security role to the user to make them enter time on behalf of others. And thus, your Delegated User should be good to make time entries.
Share Story :
Create Item Requirement from Item Forecast using X++ in D365 Operations
Introduction: In this blog article, we will see how we can create Item Requirement on insertion of Item Forecast using code. Steps: Create Extension Class for ForecastSales Table that is Item Forecast and using CoC for post insert() method we will initialize Item Requirement. We will call a new class which is created in Step 2. public void insert() { next insert(); SalesType salesType = SalesType::ItemReq; CFSCreateItemReqFrmItemForecast createItemReq = new CFSCreateItemReqFrmItemForecast(); createItemReq.initParameters(this); createItemReq.copyToSalesLine(SalesType); } Create a new class that will initialize values and insert record in Item Requirement form. class CFSCreateItemReqFrmItemForecast { ForecastSales forecastSales; } In the new class create a method initParameter. This method will initialize ForecastSales object. void initParameters(ForecastSales _forecastSales) { forecastSales = _forecastSales; } Create another method ‘copytoSalesLine’. It will validate the record and call other methods to copy values to SalesLine Table. public void copyToSalesLine(SalesType _salesType) { ProjTable projTable = ProjTable::find(forecastSales.ProjId); if (_salesType == SalesType::ItemReq) { if (!ProjStatusType::construct(projTable).validateWriteItemRequirement()) { throw error(“@SYS18447”); } } else { if (!ProjStatusType::construct(projTable).validateWriteSalesLine()) { throw error(“@SYS18447”); } } SalesLine salesLine = this.initializeSalesLine(_salesType, forecastSales, projTable); salesLine.createLine(false, // Validation false, // Init from SalesTable true, // Init from InventTable true, // Calc invent Qty false, // Search markup – copied from salesQuotationline false, // Search price – copied from salesQuotationline false, // Check reservation true); // Skip creditlimit check this.updateSalesLine(salesLine, forecastSales); salesLine.update(); } Create a new method ‘initializeSalesLine’. It is called from copyToSalesLine(). protected SalesLine initializeSalesLine(SalesType _salesType, ForecastSales _forecastSales, ProjTable _projTable) { SalesLine salesLine; salesLine.SalesType = _salesType; salesLine.initValue(); salesLine.setInventDimId(_forecastSales.InventDimId); salesLine.ItemId = _forecastSales.ItemId; salesLine.SalesQty = _forecastSales.SalesQty; salesLine.SalesUnit = _forecastSales.SalesUnitId; salesLine.ProjId = _forecastSales.ProjId; salesLine.ActivityNumber = _forecastSales.ActivityNumber; salesLine.CurrencyCode = _forecastSales.Currency; salesLine.initFromProjTable(_projTable, false); return salesLine; } Create a new method updateSalesLine(). It is called from copyToSalesLine() method. protected void updateSalesLine(SalesLine _salesLine, ForecastSales _forecastSales) { _salesLine.DefaultDimension = _salesLine.copyDimension(_forecastSales.DefaultDimension); _salesLine.ProjLinePropertyId = _forecastSales.ProjLinePropertyId; _salesLine.TaxGroup = _forecastSales.TaxGroupId; _salesLine.TaxItemGroup = _forecastSales.TaxItemGroupId; _salesLine.ProjCategoryId = _forecastSales.ProjCategoryId; _salesLine.CostPrice = _forecastSales.CostPrice; _salesLine.SalesPrice = _forecastSales.SalesPrice; _salesLine.LinePercent = _forecastSales.DiscPercent; _salesLine.LineDisc = _forecastSales.DiscAmount; _salesLine.LineAmount = 0; _salesLine.LineAmount = _salesLine.calcLineAmount(); SalesLineType_ItemReq::setSalesLineReceiptDate(_salesLine); }
