Update on zoho analytics base table via deluge

PHOTO EMBED

Fri Jun 27 2025 11:21:24 GMT+0000 (Coordinated Universal Time)

Saved by @usman13

//////////////////////////////////
orgId = "667823888";
workspaceId = "1724734000003983010";
viewId = "1724734000019844002";
headersMap = Map();
headersMap.put("ZANALYTICS-ORGID",orgId);
config = Map();
config.put("responseFormat","json");
paramsMap = Map();
paramsMap.put("CONFIG",config.toString());
email = "zoho@rebiz.com";
WS_name = "Zoho One Analytics";
///////////////////Get Analytics table data////////v2 api/////////
Get_Analytics_Data = invokeurl
[
    url :"https://analyticsapi.zoho.com/restapi/v2/bulk/workspaces/" + workspaceId + "/views/" + viewId + "/data"
    type :GET
    parameters:paramsMap
    headers:headersMap
    connection:"zoho_analytics"
];
//info Get_Analytics_Data;
if(Get_Analytics_Data != "" && Get_Analytics_Data.get("status") == "success")
{
    jobId = Get_Analytics_Data.get("data").get("jobId");
}
getUrl("https://httpstat.us/200?sleep=10000");
download_Data = invokeurl
[
    url :"https://analyticsapi.zoho.com/restapi/v2/bulk/workspaces/" + workspaceId + "/exportjobs/" + jobId + "/data"
    type :GET
    headers:headersMap
    connection:"zoho_analytics"
];
//info download_Data;
get_download_Data = download_Data.get("data");
//info get_download_Data;
Expense_Data_Analytics_List = List();
Expense_id_list = List();
All_Expense_Data = List();
counter = 0;
for each  expense in get_download_Data
{
    Expense_ID = expense.get("Expense ID");
    Date = expense.get("Date");
    Expense_Date = expense.get("Expense Date");
    Vendor = expense.get("Vendor");
    customer = expense.get("Customer");
    Expense_Category_Account_ID = expense.get("Expense Category Account ID");
    Paid_through_Account_ID = expense.get("Account ID");
    Paid_through_Account_Name = expense.get("Account");
    Expense_No = expense.get("Expense #");
    Expense_Description = expense.get("Expense Description");
    Product_Category = expense.get("Product Category");
    Department = expense.get("Department");
    Amount = expense.get("Amount");
    New_Amount = toDecimal(expense.get("New Amount")).round(2);
    info New_Amount;
    Employee_Paid_Through = expense.get("Employee Paid Through");
    Department_Tag_Option_ID = expense.get("Department Tag Option ID");
    Product_Category_Tag_Option_ID = expense.get("Product Category Tag Option ID");
    ////////////////// Tags List ///////////////////////////
    Tags_list = list();
    dep_tags_map = Map();
    dep_tags_map.put("tag_id",1398255000000000333);
    dep_tags_map.put("tag_option_id",Department_Tag_Option_ID);
    Tags_list.add(dep_tags_map);
    ////////////////////////////////////////////
    Prod_tags_map = Map();
    Prod_tags_map.put("tag_id",1398255000000000339);
    Prod_tags_map.put("tag_option_id",Product_Category_Tag_Option_ID);
    Tags_list.add(Prod_tags_map);
    /////////////////////////////////////////
    if(!Expense_id_list.contains(Expense_ID))
    {
        Expense_id_list.add(Expense_ID);
        expenseMap = Map();
        expenseMap.put("expense_id",Expense_ID);
        line_item = list();
        line_item_map = Map();
        line_item_map.put("account_id",Expense_Category_Account_ID);
        line_item_map.put("amount",New_Amount);
        line_item_map.put("tags",Tags_list);
        //add new amount variable 
        expenseMap.put("account_id",Expense_Category_Account_ID);
        expenseMap.put("date",Expense_Date);
        expenseMap.put("amount",toDecimal(New_Amount));
        expenseMap.put("Employee Paid Through",Employee_Paid_Through);
        expenseMap.put("Line_Items",line_item);
        All_Expense_Data.add(expenseMap);
        if(toDecimal(New_Amount) > 0)
        {
            line_item.add(line_item_map);
        }
        ////////////
    }
    else
    {
        line_item_map = Map();
        line_item_map.put("account_id",Expense_Category_Account_ID);
        line_item_map.put("amount",toDecimal(New_Amount));
        line_item_map.put("tags",Tags_list);
        // add new amount column
        indexFound = Expense_id_list.indexOf(Expense_ID);
        Line_item_list = All_Expense_Data.get(indexFound).get("Line_Items");
        if(toDecimal(New_Amount) > 0.0)
        {
            Line_item_list.add(line_item_map);
        }
    }
}
//info "Size of expense" + All_Expense_Data.size();
for each  expense in All_Expense_Data
{
    update_Map = Map();
    update_Map.put("line_items",expense.get("Line_Items"));
    update_Map.put("account_id",expense.get("account_id"));
    new_exp_date = expense.get("date").toDate().toString("yyyy-MM-dd");
    update_Map.put("date",new_exp_date);
    total_amount = 0.0;
    for each  line_item in expense.get("Line_Items")
    {
        total_amount = total_amount + toDecimal(line_item.get("amount"));
    }
    info "Total Amount" + total_amount.round(1);
    update_Map.put("amount",total_amount.round(1));
    update_Map.put("paid_through_account_id",expense.get("paid_through_account_id"));
    //////////////////////////////////
    Update_Expense = invokeurl
    [
        url :"https://www.zohoapis.com/books/v3/expenses/" + Expense_ID + "?organization_id=669825616"
        type :PUT
        parameters:update_Map.toString()
        connection:"zoho_books"
    ];
    info "Update_Expense Response:" + Update_Expense;
    checkCode = Update_Expense.get("code");
    if(checkCode == 0)
    {
        /////////////////////Update the data on zoho analytics///////////
        columnsMap = Map();
        columnsMap.put("Expense ID",Expense_ID);
        columnsMap.put("Is Updated","Yes");
        columnsMap.put("Expense Details",Line_item_list.toString());
        columns = Map();
        columns.put("columns",columnsMap);
        paramsMap = Map();
        paramsMap.put("CONFIG",columns.toString());
        headersMap = Map();
        headersMap.put("ZANALYTICS-ORGID",orgId);
        response = invokeurl
        [
            url :"https://analyticsapi.zoho.com/restapi/v2/workspaces/" + workspaceId + "/views/1724734000020312044/rows"
            type :POST
            parameters:paramsMap
            headers:headersMap
            connection:"zoho_analytics"
        ];
        //info response;
    }
}
content_copyCOPY