Techno-Functional Dynamics 365 Data Model Tutorial Part 16 of 25 – Create Sales Quotation Process

Techno-Functional Dynamics 365 Data Model Tutorial Part 16 of 25 – Create Sales Quotation Process

Create Sales Quotation in Dynamics 365 Data Model Tutorial 16

Create Sales Quotation in Dynamics 365 Data Model Tutorial 16

In this Techno-Functional Tutorial 16 by Instructor Brandon, you learn how to Create Sales Quotation in Microsoft Dynamics 365 as a great selling tool.

“It has been a long and fruitful journey regarding these blog post series! Dynamics 365 is big domain to have more than 25 business processes, that’s for sure, we will continue describing the functional steps, table structures and code samples for the most important ones. Now we will talk about Creating Sales Quotation or a Business Sale Quote, a useful feature for selling related items to customers in the POS (Point of Sale) of your brick and mortar store or your online commerce. I hope you will enjoy this post as much as the rest of the series. We are here to help you with your Microsoft Dynamics 365 implementation, please reach us anytime”. — Brandon A.

Create a Sales Quotation Process

A ‘Sales Quotation’ or business sale quote is a formal business document. It allows a potential buyer/customer to view the cost involved in purchasing a specific service or product. Actually, it is generally used by suppliers or resellers to initiate a business transaction cycle. Moreover, a professional ‘Sales Quotation’ contains an itemized list of products and services. Also, it states the price per item, terms of sale, and acceptable payment methods. So, before making a purchase, a sales quote is furnished at the request of a prospective buyer who is interested in knowing the cost of a certain product/service, or both. Indeed, learning how to Create Sales Quotation is ideal.

A ‘Sales Quotation’ is a formal document. However, it is not a legally binding contract. Instead, it is a document to establish a mutual understanding between two business entities. Doing that, once the quote is accepted/agreed upon, the Seller and the Customer commits to making a transaction at the stated prices and conditions.

Going forward, Follow-up is an integral and important part of the sales process. Moreover, not following through results is a missed opportunity for conversion. Actually, Follow-up is one of the significant factors in a sales process that helps convert a quote into an actual sale. A follow-up activity is about demonstrating your interest and seriousness to your buyers regarding the intended transaction.

Once you have shared the ‘Sales Quotation’, the team should follow up within 2-3 working days to inquire regarding feedback, intentions, or concerns. It is a good method to stay on their radar and increase your chance of winning the deal.

Now, let’s see how to create a Sales Quotation inside Dynamics 365:

Quick Functional Recap

STEP 1: Sales and Marketing

The First Step in the creation of Sales Quotation in Microsoft Dynamics 365 is clicking on Sales and Marketing. After that click on the Sales Quotation option as shared below. From there you have to go to All Quotation.

To follow the pattern here is a brief.

Go to Sales and marketing > Sales quotations > All quotations.

STEP 1: Sales and Marketing

STEP 2: Click on New

The next step which you have to follow is Click on the New option as highlighted in the screenshot attached below.

STEP 2: Click on New

STEP 3: Select an Option

Coming to Third Step; in the Account type field you have to select an option.

In the Customer account field, please enter or select a value.

Then Click OK.

And then Click Yes.

STEP 3: Select an Option

STEP 4: Select Item & Enter Quantity of Item

Go to the Line details, there you will be selecting item and then you have to enter the quantity of the item.

STEP 4: Select Item & Enter Quantity of Item

Looking for Microsoft Dynamics 365 Training Courses. Instructor Brandon can help you in this as we have the most advanced Dynamics 365 Training Courses from Microsoft along with Top Level Certifications which can add real-time value and enhance your career as a professional in IT World.

Microsoft Dynamics 365 Training Courses

Moreover, you can also read about Microsoft courses and Dynamics 365 certifications with every possible detailed information provided.

STEP 5: Send Quotation

Last but not least, Go to the Quotation tab. There, you have to click on the Send quotation tab to send the quotation.

STEP 5: Send Quotation

STEP 6: Confirm Sales Quotation

To confirm the quotation, go to the Follow up Tab. There, Click on Confirm button to confirm the sales quotation. Doing that, a dialog box will come up. After it happens, click on OK.

STEP 6: Confirm Sales Quotation

Quick Technical Recap

Let’s have a quick technical recap of creating sales quotation in Dynamics 365 as shared below.

1. Sales Quotation Table

The Sales Quotation Table contains sales quotation header details as shown below.

Data Field Data Type Description
QUOTATIONID nvarchar Primary Key identifier for the Sales Quotation.
CONFIRMDATE datetime Date of confirmation of the sales quotation
CUSTACCOUNT nvarchar The customer account number
CUSTPURCHASEORDER nvarchar In case the Sales Quotation is accepted, this is the purchase order number

2. Sales Quotation Line

The Sales Quotation Line contains sales quotation line details as shared below.

Data Field Data Type Description
INVENTRAANSID String Primary key identifier for the sales quotation line table
NAME String Name of the sales quotation
PRICEUNIT Real Price of the item’s unit in the quotation
QUOTATIONID String Foreign key of the SalesQuotationTable
ITEMID String Foreign key of the InventTable

3. Logistic Postal Address

As far as the Logistics Postal Address table is concerned, it contains the addresses in the system that could be associated with various entities.

Data Field Data Type Description
RECID Int64 Primary Key Identifier for the Logistic Postal Address table
ADDRESS String The customer’s address
CITY String The customer’s City of residence
ZIPCODE String The customer’s Zip code

4. Invent Table

The Invent Table table contains information about items as shared.

Data Field Data Type Description
ITEMID String Primary key identifier for the Item table
HEIGHT Real The item’s height
WIDTH Real The item’s width
ITEMTYPE Enum The enumeration that identifies whether an item is an Inventory, Non-inventory or if it’s a service.

5. Invent Trans Origin

Below shared are the invent trans origin details.

Data Field Data Type Description
RECID Int64 Primary key identifier for Invent Trans Origin Table
REFERENCECATEGORY Enum An enumeration that denotes the category of the reference
INVENTRAANSID String Foreign key of the Sales Quotation Line table

ERD – Entity Relationship Diagram for Sales Quotation Process

This is the ERD for the Sales Quotation process:

ERD - Entity Relationship Diagram for Sales Quotation Process

Code

This code is used to create a sales order quotation in X++.

  
    static void CreateSalesQuotation(Args _args)
    {
        AxSalesQuotationTable       axSalesQuotationTable;
        AxSalesQuotationLine        axSalesQuotationLine ;
        SalesQuotationTable         salesQuotationTable;
        SalesQuotationLine          salesQuotationLine;
        CustTable                   custTable;
        InventTable                 inventTable;
        SalesQty                    salesQty;
        SalesPrice                  salesPrice;
        SalesLineDisc               salesLineDisc;
        SalesLinePercent            salesLinePercent;
        container                   conItems = ["ItemA","Dell","HP"];
        int                         i =0;
        InventDim                   inventDim;
        SalesQuotationEditLinesForm salesQuotationEditLinesForm;
        ParmId                      parmId;
        SalesQuotationUpdate        salesQuotationUpdate;
        ;
 
        salesQty                    = 10;
        SalesPrice                  = 100;
        salesLineDisc               = 1;
        salesLinePercent            = 1;
        axSalesQuotationTable =  new AxSalesQuotationTable();
        axSalesQuotationTable.parmCustAccount('Jaga');
        axSalesQuotationTable.parmCurrencyCode('USD');
        axSalesQuotationTable.save();
 
        for(i = 1; i<= conLen(conItems); i++)
        {
            axSalesQuotationLine =  new AxSalesQuotationLine();//::construct(smmQuotationLine);
 
            axSalesQuotationLine.axSalesQuotationTable(axSalesQuotationTable);
 
            axSalesQuotationLine.parmQuotationId(axSalesQuotationTable.parmQuotationId());
            axSalesQuotationLine.axSalesQuotationTable(axSalesQuotationTable);
            axSalesQuotationLine.parmItemId(conPeek(conItems,i));
 
            axSalesQuotationLine.parmSalesQty(salesQty);
            axSalesQuotationLine.parmSalesPrice(SalesPrice);
            axSalesQuotationLine.parmLineDisc(SalesLineDisc);
            axSalesQuotationLine.parmLinePercent(SalesLinePercent);
            inventDim.InventSiteId      = "1";
            inventDim.InventLocationId  = "11";
 

            axSalesQuotationLine.parmInventDimId('002504');
            axSalesQuotationLine.parmcurrencyCode('USD');
            axSalesQuotationLine.save();
        }
 
        //Quotation status -- sent
        if(!axSalesQuotationTable.salesQuotationTable()) return;
        salesQuotationEditLinesForm =
     SalesQuotationEditLinesForm::construct(DocumentStatus::Quotation); //DocumentStatus
        parmId                      = salesQuotationEditLinesForm.parmId();
 

        salesQuotationEditLinesForm.initParmSalesQuotationTable(axSalesQuotationTable.salesQuotationTable());
 
        salesQuotationEditLinesForm.parmId(parmId);
        salesQuotationEditLinesForm.parmTransDate(systemdateget());
 
        salesQuotationEditLinesForm.prePromptInit();
 
        salesQuotationEditLinesForm.initParameters(NoYes::No, //printFormletter,
                                                NoYes::No, //transferHours2Forecast,
                                                NoYes::No, //transferExpenses2Forecast,
                                                NoYes::No, //transferFees2Forecast,
                                                NoYes::No, //transferItems2Forecast,
                                                'Competency', //reasonCode,
                                                NoYes::No);   //usePrintManagement)
        salesQuotationEditLinesForm.run();
 
        /// Quotation status -- Confirmation
        if(!axSalesQuotationTable.salesQuotationTable())
         return;
        salesQuotationEditLinesForm =
            SalesQuotationEditLinesForm::construct(DocumentStatus::Confirmation); //DocumentStatus
        //Quotation o Confirm
        parmId                      = salesQuotationEditLinesForm.parmId();
 

        salesQuotationEditLinesForm.initParmSalesQuotationTable(axSalesQuotationTable.salesQuotationTable());
 
        salesQuotationEditLinesForm.parmId(parmId);
        salesQuotationEditLinesForm.parmTransDate(systemdateget());
 
        salesQuotationEditLinesForm.prePromptInit();
 
        salesQuotationEditLinesForm.initParameters(NoYes::No, //printFormletter,
                                                NoYes::No, //transferHours2Forecast,
                                                NoYes::No, //transferExpenses2Forecast,
                                                NoYes::No, //transferFees2Forecast,
                                                NoYes::No, //transferItems2Forecast,
                                                'Competency', //reasonCode,
                                                NoYes::No);   //usePrintManagement)
        salesQuotationEditLinesForm.run();
 
    }

 

Summary: Create Sales Quotation in Dynamics 365 Data Model Tutorial 16

In conclusion to this post Create Sales Quotation in Dynamics 365 Data Model Tutorial 16 there is a lot to learn. To summarize, following are the outcomes which can be learned from our blog post:

  • Learned about the ‘Sales Quotation’ Process
  • Familiarized yourself with the step by step ‘Sales Quotation’ creation process
  • Looked at executable code, tables, and ERD for the process
  • Understood the importance of the tables Sales Quotation Table, Sales Quotation Line, Logistic Postal Address, Invent Table and Invent Trans Origin

Microsoft Dynamics 365 Techno-Functional Data Model Tutorial 16 explains how to Create Sales Quotation in Dynamics 365 as Business Sale Quote.

In addition, we sincerely hope that you enjoyed part 16 of our exciting series on the Dynamics 365 data model. In short we aim to provide quality service at all times. Moreover, if you need to reach me, you know how to get in touch by reaching out to me here.  – Brandon Ahmad, founder of Instructor Brandon and Dynatuners.

Videos