Techno-Functional Dynamics 365 F&S Data Model Explanations for Reporting Part 24 of 25: Project Quotation Creation and Process

Techno-Functional Dynamics 365 F&S Data Model Explanations for Reporting Part 24 of 25: Project Quotation Creation and Process

Create a Project Quote: Dynamics 365 Project Quotation Tutorial

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.

Project Quotation Creation Process

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

Create a Project Quote: Dynamics 365 Project Quotation Tutorial

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 a Project Quote

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 a project quote

Create Quotation

  • When you click on New button, a form will appear at the right side the screen

create a project quote

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

Create a Project Quote: Dynamics 365 Project Quotation Tutorial

Select Customer Account

  • In the next step, select a customer account for which you are going to create project quotation

Select Customer Account

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

Select Customer Information

Project Quotation Form

  • After clicking OK, Project Quotation form will open with the header and lines details

Project Quotation Form

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

Change Project Start & End Date

Product Information Management

  • Click on small UP arrow sign at the right of the form to collapse the header section

Product Information Management

Add Line

  • In Lines section, click on Add line button to insert new line in grid

Add Line

Transaction Type

  • In newly inserted line, click on Transaction type drop down and select Value

Transaction Type

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:

Selection of Values

Save Project Quotation

  • Now save this project quotation by click Save button on top left corner of the form

Save Project Quotation

Submit Project Quotation

  • In the next step, you have to submit this quotation by clicking Workflow drop-down and then Submit

Submit Project Quotation

Review Project Quotations

  • Give some comments and click Submit button

Review Project Quotations

Project Quotation Status

  • As you will see after this, the project quotation status will be changed to Submitted

Project Quotation Status

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:

create a project quote

Code:

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));
    }
}

Tables:

      1. 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
      1. 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.
      1. 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.
      1. 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.

Videos