Let the platform do the work

Relating Quotes and Products

Overview

A PHP example demonstrating how to create and relate Products to Quotes using cURL and the v4_1 REST API.

Example

<?php

    $url = "http://{site_url}/service/v4_1/rest.php";
    $username = "admin";
    $password = "password";

    //function to make cURL request
    function call($method, $parameters, $url)
    {
        ob_start();
        $curl_request = curl_init();

        curl_setopt($curl_request, CURLOPT_URL, $url);
        curl_setopt($curl_request, CURLOPT_POST, 1);
        curl_setopt($curl_request, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
        curl_setopt($curl_request, CURLOPT_HEADER, 1);
        curl_setopt($curl_request, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($curl_request, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl_request, CURLOPT_FOLLOWLOCATION, 0);

        $jsonEncodedData = json_encode($parameters);

        $post = array(
            "method" => $method,
            "input_type" => "JSON",
            "response_type" => "JSON",
            "rest_data" => $jsonEncodedData
        );

        curl_setopt($curl_request, CURLOPT_POSTFIELDS, $post);
        $result = curl_exec($curl_request);
        curl_close($curl_request);

        $result = explode("\r\n\r\n", $result, 2);
        $response = json_decode($result[1]);
        ob_end_flush();

        return $response;
    }

    //login ---------------------------------------------- 
$login_parameters = array( "user_auth" => array( "user_name" => $username, "password" => md5($password), "version" => "1" ), "application_name" => "RestTest", "name_value_list" => array(), ); $login_result = call("login", $login_parameters, $url); /* echo "<pre>"; print_r($login_result); echo "</pre>"; */ //get session id $session_id = $login_result->id; //create quote ----------------------------------------------
$createQuoteParams = array( 'session' => $session_id, 'module_name' => 'Quotes', 'name_value_list' => array( array( 'name' => 'name', 'value' => 'Widget Quote' ), array( 'name' => 'team_count', 'value' => '' ), array( 'name' => 'team_name', 'value' => '' ), array( 'name' => 'date_quote_expected_closed', 'value' => date('Y-m-d', mktime(0, 0, 0, date('m') , date('d')+7, date('Y'))) ), array( 'name' => 'quote_stage', 'value' => 'Negotiation' ), array( 'name' => 'quote_num', 'value' => '' ), array( 'name' => 'quote_type', 'value' => 'Quotes' ), array( 'name' => 'subtotal', 'value' => '1230.23' ), array( 'name' => 'subtotal_usdollar', 'value' => '1230.23' ), ), ); $createQuoteResult = call('set_entry', $createQuoteParams, $url); echo "Create Quote Result<br />"; echo "<pre>"; print_r($createQuoteResult); echo "</pre>"; //create product ---------------------------------------------- $createProductParams = array( 'session' => $session_id, 'module_name' => 'Products', 'name_value_list' => array( array( 'name' => 'name', 'value' => 'Widget' ), array( 'name' => 'quote_id', 'value' => $createQuoteResult->id ), array( 'name' => 'status', 'value' => 'Quotes' ) ) ); $createProductResult = call('set_entry', $createProductParams, $url); echo "Create Product Result<br />"; echo "<pre>"; print_r($createProductResult); echo "</pre>"; //create product-bundle ---------------------------------------------- $createProductBundleParams = array( "session" => $session_id, "module_name" => "ProductBundles", "name_value_list" => array( array( 'name' => 'name', 'value' => 'Rest SugarOnline Order'), array( 'name' => 'bundle_stage', 'value' => 'Draft' ), array( 'name' => 'tax', 'value' => '0.00' ), array( 'name' => 'total', 'value' => '0.00' ), array( 'name' => 'subtotal', 'value' => '0.00' ), array( 'name' => 'shippint', 'value' => '0.00' ), array( 'name' => 'currency_id', 'value' => '-99' ), ) ); $createProductBundleResult = call('set_entry', $createProductBundleParams, $url); echo "Create ProductBundles Result<br />"; echo "<pre>"; print_r($createProductBundleResult); echo "</pre>"; //relate product to product-bundle ---------------------------------------- $relationshipProductBundleProductsParams = array( 'sesssion' => $session_id, 'module_name' => 'ProductBundles', 'module_id' => $createProductBundleResult->id, 'link_field_name' => 'products', 'related_ids' => array( $createProductResult->id ), ); // set the product bundles products relationship $relationshipProductBundleProductResult = call('set_relationship', $relationshipProductBundleProductsParams, $url); echo "Create ProductBundleProduct Relationship Result<br />"; echo "<pre>"; print_r($relationshipProductBundleProductResult); echo "</pre>"; //relate product-bundle to quote ---------------------------------------- $relationshipProductBundleQuoteParams = array( 'sesssion' => $session_id, 'module_name' => 'Quotes', 'module_id' => $createQuoteResult->id, 'link_field_name' => 'product_bundles', 'related_ids' => array( $createProductBundleResult->id ), 'name_value_list' => array() ); // set the product bundles quotes relationship $relationshipProductBundleQuoteResult = call('set_relationship', $relationshipProductBundleQuoteParams, $url); echo "Create ProductBundleQuote Relationship Result<br />"; echo "<pre>"; print_r($relationshipProductBundleQuoteResult); echo "</pre>";

Result

//Create Quote Result
stdClass Object
(
    [id] => 2e0cd18b-21da-50f0-10f6-517e835a1e09
    [entry_list] => stdClass Object
        (
            [name] => stdClass Object
                (
                    [name] => name
                    [value] => Widget Quote
                )

            [team_count] => stdClass Object
                (
                    [name] => team_count
                    [value] =>
                )

            [team_name] => stdClass Object
                (
                    [name] => team_name
                    [value] =>
                )

            [date_quote_expected_closed] => stdClass Object
                (
                    [name] => date_quote_expected_closed
                    [value] => 2013-05-06
                )

            [quote_stage] => stdClass Object
                (
                    [name] => quote_stage
                    [value] => Negotiation
                )

            [quote_num] => stdClass Object
                (
                    [name] => quote_num
                    [value] =>
                )

            [quote_type] => stdClass Object
                (
                    [name] => quote_type
                    [value] => Quotes
                )

            [subtotal] => stdClass Object
                (
                    [name] => subtotal
                    [value] => 1230.23
                )

            [subtotal_usdollar] => stdClass Object
                (
                    [name] => subtotal_usdollar
                    [value] => 1230.23
                )

        )

)

//Create Product Result
stdClass Object
(
    [id] => 6c40f344-a269-d4d0-9929-517e83884fb2
    [entry_list] => stdClass Object
        (
            [name] => stdClass Object
                (
                    [name] => name
                    [value] => Widget
                )

            [quote_id] => stdClass Object
                (
                    [name] => quote_id
                    [value] => 2e0cd18b-21da-50f0-10f6-517e835a1e09
                )

            [status] => stdClass Object
                (
                    [name] => status
                    [value] => Quotes
                )

        )

)

//Create ProductBundles Result
stdClass Object
(
    [id] => a8a4e449-7e72-dea5-9495-517e830a7353
    [entry_list] => stdClass Object
        (
            [name] => stdClass Object
                (
                    [name] => name
                    [value] => Rest SugarOnline Order
                )

            [bundle_stage] => stdClass Object
                (
                    [name] => bundle_stage
                    [value] => Draft
                )

            [tax] => stdClass Object
                (
                    [name] => tax
                    [value] => 0
                )

            [total] => stdClass Object
                (
                    [name] => total
                    [value] => 0
                )

            [subtotal] => stdClass Object
                (
                    [name] => subtotal
                    [value] => 0
                )

            [currency_id] => stdClass Object
                (
                    [name] => currency_id
                    [value] => -99
                )

        )

)

//Create ProductBundleProduct Relationship Result
stdClass Object
(
    [created] => 1
    [failed] => 0
    [deleted] => 0
)

//Create ProductBundleQuote Relationship Result
stdClass Object
(
    [created] => 1
    [failed] => 0
    [deleted] => 0
)

 

Topics