Dynamics 365 Project Quotation Tutorial: How to Create a Project Quote?
This article on ‘Create a Project Quote: Dynamics 365 Project Quotation Tutorial’ introduces the concept of project quotations.
You can use it to make an attractive offer to a customer [as the first step of the project phase].
A project quotation might include quoted items and services, basic contact information, special trade agreements, discounts, surcharges and possible taxes.The ability to monitor, review, and control the pipeline of project quotations/orders is an important part of project management.
Various tools help with these tasks: correct reference data definitions (quotation types, quotation origin, prognosis and probability) help you analyze the pipeline and categorize reasons for winning or losing a quotation.
Dynamics 365 Project Quotation
In a project quotation you enter the services, basic contact information, special trade agreements, discounts, estimated taxes and surcharges for a project.
You can also select activities or tasks for a project; creating a hierarchy of tasks and sub-tasks. For each activity, you can enter details: timing, duration, skills and experience required are all a part of this.
The project quotation is a non-binding estimate of the work that must be performed. However, when quotation information is copied to a project that is associated with a project contract, that information becomes part of a binding agreement between two parties.
If the customer approves the project quotation, you can copy the information in the project quotation. You can also copy the project quotation information to a project forecast at the same time.
Project Quotation Creation Process
In this blog post we will follow the below mentioned scenario:
A customer named Myrtle Retail Company wants to start a project that includes installing audio systems in company cars. We will, therefore, generate a project quotation mentioning the steps to complete this task.
Functional Overview: Project Quotation Tutorial
Open Dynamics 365 Client
- Open Microsoft Dynamics 365 Client and go to modules by clicking
on top left corner of D365 Client
Project Management and Accounting
- Click on Modules, from all modules list click on Project Management and Accounting
Project Quotations
- A new items list will appear parallel to the modules list. From that list, click on Quotations to expand it and then click on Project Quotations
Create New Project Quotation
- New form will be opened in which all the previously created Project quotations will be displayed. From top left corner, click on New button to create new project quotation
Create Quotation
- When you click on New button, a form will appear at the right side the screen
Account Type
- In this form we have to select a couple of values. First, click on Account type drop down and select Customer from values
Select Customer Account
- In the next step, select a customer account for which you are going to create project quotation
Select Customer Information
- When you select your customer, some information will be automatically filled i.e Delivery name and Address. After this, click OK on bottom of the form
Project Quotation Form
- After clicking OK, Project Quotation form will open with the header and lines details
Change Project Start & End Date
- For this part, you have to put in some values in the header before proceeding next. Like in Calendar drop down, select 24 hr. Change estimated project start and end date as per your requirements. By default, your system will select creation date as start and end date
Product Information Management
- Click on small UP arrow sign at the right of the form to collapse the header section
Add Line
- In Lines section, click on Add line button to insert new line in grid
Transaction Type
- In newly inserted line, click on Transaction type drop down and select Value
Selection of Values
- Select other values accordingly, and drop as many lines as required. After inserting all required lines, the form should look like this:
Save Project Quotation
- Now save this project quotation by click Save button on top left corner of the form
Submit Project Quotation
- In the next step, you have to submit this quotation by clicking Workflow drop-down and then Submit
Review Project Quotations
- Give some comments and click Submit button
Project Quotation Status
- As you will see after this, the project quotation status will be changed to Submitted
Technical Overview: Create a Project Quote with Microsoft Dynamics 365
In this process, there are two major tables. The first one is SalesQuotationTable and second is SalesQuotationLine.
Entity Relationship Diagram:
Code:
[sourcecode language=”c-sharp”] class CreateProjectQuotationRunableClass{
/// <summary>
/// Runs the class with the specified arguments.
/// </summary>
/// <param name = "_args">The specified arguments.</param>
public static void main(Args _args)
{
SalesQuotationTable quotationHeaderTable;
SalesQuotationLine quotationLinesTable;
CustTable custTable;
InventDim inventDim;
NumberSeq num = new NumberSeq();
num = NumberSeq::newGetNum(SalesParameters::numRefQuotationIdBase());
custTable = CustTable::find("US-003");
try
{
ttsbegin;
quotationHeaderTable.clear();
quotationHeaderTable.QuotationId = num.num();
quotationHeaderTable.QuotationType = QuotationType::Project;
quotationHeaderTable.CustAccount = custTable.AccountNum;
quotationHeaderTable.QuotationName = custTable.name();
quotationHeaderTable.InvoiceAccount = custTable.InvoiceAccount;
quotationHeaderTable.CurrencyCode = custTable.Currency;
quotationHeaderTable.DlvMode = ’10’;
quotationHeaderTable.DeliveryName = custTable.address();
quotationHeaderTable.ReceiptDateRequested = today();
quotationHeaderTable.ShippingDateRequested = today();
quotationHeaderTable.LanguageId = custTable.languageId();
quotationHeaderTable.insert();
inventDim.InventSiteId = ’01’;
inventDim.InventLocationId = ’11’;
inventDim.modifiedField(fieldNum(InventDim,InventSiteId));
inventDim.modifiedField(fieldNum(InventDim,InventLocationId));
inventDim = InventDim::findOrCreate(inventDim);
quotationLinesTable.ItemId = ‘M0053’;
quotationLinesTable.QuotationId = quotationHeaderTable.QuotationId;
quotationLinesTable.QuotationType = quotationHeaderTable.QuotationType;
quotationLinesTable.AccountType = LedgerJournalACType::Project;
quotationLinesTable.Company = curExt();
quotationLinesTable.CurrencyCode = quotationHeaderTable.CurrencyCode;
quotationLinesTable.ConfirmedDlv = today();
quotationLinesTable.InventDimId = inventDim.inventDimId;
quotationLinesTable.ShippingDateRequested = today();
quotationLinesTable.SalesPrice = 10;
quotationLinesTable.SalesQty = 10;
quotationLinesTable.insert();
ttscommit;
}
catch
{
error(enum2Str(Exception::CLRError));
}
info(strFmt(‘%1’, quotationHeaderTable.QuotationId));
}
}
[/sourcecode]
Tables:
-
-
- SalesQuotationTable:
-
Field | Data Type | Description |
QuotationId | String | In this column quotation Ids saved |
CustAccount | String | Customer accounts saved in this column, for which quotation has been created |
PSAEstProjStartDate | Date | Estimated project start date is saved in this column |
PSAEstProjEndDate | Date | Estimated project end date is saved in this column |
InventLocationId | String | Inventory location is saved in this column for which quotation has been created |
InvetSiteId | String | Inventory site is saved in this column |
-
-
- SalesQuotationLine:
-
Field | Data Type | Description |
ItemId | String | Item number used in quotation is saved in this column. |
QuotationId | String | In this column quotations Ids are saved. |
InventtransId | String | Related inventory transaction Id is saved in this column. |
SalesUnit | String | Sales unit used for project quotation is saved in this column. |
RecId | Int | Record Id is saved in this column. |
-
-
- InventLocation:
-
Field | Data Type | Description |
Name | String | Name of inventory location is saved here. |
InventLocationId | String | In this column unique Id of inventory location is saved. |
InventSiteId | String | Related inventory site Id is saved in this column. |
RecId | Int | Record Id is saved in this column. |
-
-
- CustTable:
-
Field | Data Type | Description |
AccountNum | String | Unique customer numbers/Id are saved in this column. |
Party | Int | This saves Reference to DirPartyTable |
RecId | Int | This saves Record Id |
Summary – Create a Project Quote: Dynamics 365 Project Quotation Tutorial
In this blog post Create a Project Quote: Dynamics 365 Project Quotation Tutorial we discussed about concept of project quotation and the step by step process to create project quotation in Dynamics 365.
In the technical part we discussed about tables involved in project quotation creation process using Entity relationship diagram and details of multiple tables.
X++ code for developers to create project quotation directly from visual studio was also discussed.
Moreover, we sincerely hope that you enjoyed the technical blog post on Create a Project Quote with Microsoft Dynamics 365. In short, we aim to provide quality service at all times. If you have any queries, you know how to get in touch by reaching out to me here. – Brandon Ahmad, founder of Instructor Brandon and Dynatuners.