Profit margins on Estimates, Sales order & Invoices

Profit margins on Estimates, Sales order & Invoices

I've written a little script for a custom button if anyone is interested.
Just go to "Preferences" | Sales orders | Custom Buttons, click "New"
If you want it on your Invoices or estimates, then do this in the Invoices or estimates preferences & change any mention of salesorder below to invoice or estimate
Enter Custom button name = "Margins" - or whatever you prefer.
Delete the sample function.
Copy & paste the code below.....
Enter your organization id (bold / red)
Click "Save"
Refresh your browser & then go to the Sales order module, select a sales order, click "More" | "More Actions" | Select "Margins" or whatever you named the custom button !
Update: As related lists are now available in sales orders, invoices & estimates, this looks better in a "Related list".

orgId = "Your organization Id"; // enter your organization id here
resultMap = Map();
marginHeader = List();
listData = List();
marginHeader.add({"key":"itemName","value":"Name"});
marginHeader.add({"key":"qty","value":"Qty","align":"right"});
marginHeader.add({"key":"cost","value":"Cost","align":"right"});
marginHeader.add({"key":"lineValue","value":"Line Cost","align":"right"});
marginHeader.add({"key":"lineSale","value":"Line Sale","align":"right"});
marginHeader.add({"key":"profit","value":"Profit","align":"right"});
marginHeader.add({"key":"margin","value":"Margin","align":"right"});
items = salesorder.get("line_items");
totalCost = 0;
totalProfit = 0;
totalMargin = 0;
for each  line in items
{
try
{
id = line.get("item_id");
details = zoho.books.getRecordsByID("items",orgId,id);
details = details.get("item");
name = details.get("name");
marginDetails = Map();
qty = line.get("quantity").round(2);
sale = line.get("item_total").round(2);
costPrice = details.get("purchase_rate").round(2);
lineValue = (qty * costPrice).round(2);
itemCost = qty * costPrice;
totalCost = totalCost + lineValue;
lineTotal = line.get("item_total");
profit = sale - itemCost;
totalProfit = totalProfit + profit;
margin = (profit / lineTotal * 100).round(2);
totalMargin = totalMargin + margin;
marginDetails.put("margin",margin.round(0) + "%");
marginDetails.put("itemName",name);
marginDetails.put("qty",qty.round(2) + "");
marginDetails.put("cost",costPrice.round(2) + "");
marginDetails.put("lineValue",lineValue.round(2) + "");
marginDetails.put("lineSale",sale.round(2) + "");
marginDetails.put("profit",profit.round(2) + "");
listData.add(marginDetails);
} catch(e) {}
}
seperator = Map();
seperator.put("seperator","");
listData.add(seperator);
saleValue = salesorder.get("sub_total");
saleValue = toDecimal(saleValue);
totalMargin = totalProfit / saleValue * 100;
totalDetails = Map();
totalDetails.put("itemName","Nett : ");
totalDetails.put("lineValue",totalCost.text("##,###.00") + "");
totalDetails.put("profit",totalProfit.text("##,###.00"));
totalDetails.put("lineSale",salesorder.get("sub_total").text("##,###.00"));
totalDetails.put("margin",totalMargin.round(0) + "%");
listData.add(totalDetails);
resultMap.put("header_context",marginHeader);
resultMap.put("data",listData);
gross = toDecimal(salesorder.get("total"));
gtotalCost = totalCost;
gprofit = totalProfit;
gmargin = gprofit / gross * 100;
gtotalDetails = Map();
gtotalDetails.put("itemName","Gross : ");
gtotalDetails.put("profit",gprofit.text("##,###.00"));
gtotalDetails.put("lineValue",gtotalCost.text("##,###.00") + "");
gtotalDetails.put("lineSale",gross.text("##,###.00"));
gtotalDetails.put("margin",gmargin.round(0) + "%");
listData.add(gtotalDetails);
resultMap.put("data",listData);
return resultMap;

      Zoho SalesIQ Resources



            Zoho TeamInbox Resources

              Zoho DataPrep Resources


                  Zoho CRM Plus Resources

                    Zoho Books Resources


                      Zoho Subscriptions Resources

                        Zoho Desk Resources

                          Zoho Projects Resources


                            Zoho Sprints Resources


                              Qntrl Resources


                                Zoho Creator Resources


                                  Zoho WorkDrive Resources




                                      Zoho Campaigns Resources

                                        Zoho CRM Resources

                                                    Design. Discuss. Deliver.

                                                    Create visually engaging stories with Zoho Show.

                                                    Get Started Now


                                                      Zoho Show Resources


                                                        Zoho Writer Writer

                                                        Get Started. Write Away!

                                                        Writer is a powerful online word processor, designed for collaborative work.

                                                                  有料プランをご利用の方