如果以后有人发现这很有用,这就是最终的工作:
invoice_record = zoho.crm.getRecordById("Invoices",invoice_id);
start_date_datestring = invoice_record.get("Service_Date");
start_date = start_date_datestring.toDate("yyyy-MM-dd");
end_date_datestring = invoice_record.get("End_of_Service_Date");
end_date = end_date_datestring.todate("yyyy-MM-dd");
invoice_date = invoice_record.get("Invoice_Date");
start_date_month = start_date.getMonth();
start_date_year = start_date.getyear();
end_date_year = end_date.getyear();
subtotal2 = invoice_record.get("Sub_Total");
// calculate how many months in the service period
service_length = start_date.monthsBetween(end_date);
//April Revenue Recognition
if(4 >= start_date_month)
{
april_date_datestring = "04/30/" + start_date_year;
}
else
{
april_date_datestring = "04/30/" + end_date_year;
}
april_date = april_date_datestring.todate("MM/d/yyyy");
info april_date;
if(april_date >= start_date && april_date <= end_date)
{
rev_rec_april = (subtotal2 / service_length).round(2);
}
else
{
rev_rec_april = 0.0;
}
//May Revenue Recognition
if(5 >= start_date_month)
{
may_date_datestring = "05/31/" + start_date_year;
}
else
{
may_date_datestring = "05/31/" + end_date_year;
}
may_date = may_date_datestring.todate("MM/d/yyyy");
info may_date;
if(may_date >= start_date && may_date <= end_date)
{
rev_rec_may = (subtotal2 / service_length).round(2);
}
else
{
rev_rec_may = 0.0;
}
//June Revenue Recognition
if(6 >= start_date_month)
{
june_date_datestring = "06/30/" + start_date_year;
}
else
{
june_date_datestring = "06/30/" + end_date_year;
}
june_date = june_date_datestring.todate("MM/d/yyyy");
info june_date;
if(june_date >= start_date && june_date <= end_date)
{
rev_rec_june = (subtotal2 / service_length).round(2);
}
else
{
rev_rec_june = 0.0;
}
//July Revenue
if(7 >= start_date_month)
{
july_date_datestring = "07/31/" + start_date_year;
}
else
{
july_date_datestring = "07/31/" + end_date_year;
}
july_date = july_date_datestring.todate("MM/d/yyyy");
info july_date;
if(july_date >= start_date && july_date <= end_date)
{
rev_rec_july = (subtotal2 / service_length).round(2);
}
else
{
rev_rec_july = 0.0;
}
//August Revenue
if(8 >= start_date_month)
{
august_date_datestring = "08/31/" + start_date_year;
}
else
{
august_date_datestring = "08/31/" + end_date_year;
}
august_date = august_date_datestring.todate("MM/d/yyyy");
info august_date;
if(august_date >= start_date && august_date <= end_date)
{
rev_rec_august = (subtotal2 / service_length).round(2);
}
else
{
rev_rec_august = 0.0;
}
//September Revenue
if(9 >= start_date_month)
{
september_date_datestring = "09/30/" + start_date_year;
}
else
{
september_date_datestring = "09/30/" + end_date_year;
}
september_date = september_date_datestring.todate("MM/d/yyyy");
info september_date;
if(september_date >= start_date && september_date <= end_date)
{
rev_rec_september = (subtotal2 / service_length).round(2);
}
else
{
rev_rec_september = 0.0;
}
//October Revenue
if(10 >= start_date_month)
{
october_date_datestring = "10/31/" + start_date_year;
}
else
{
october_date_datestring = "10/31/" + end_date_year;
}
october_date = october_date_datestring.todate("MM/d/yyyy");
info october_date;
if(october_date >= start_date && october_date <= end_date)
{
rev_rec_october = (subtotal2 / service_length).round(2);
}
else
{
rev_rec_october = 0.0;
}
//November Revenue
if(11 >= start_date_month)
{
november_date_datestring = "11/30/" + start_date_year;
}
else
{
november_date_datestring = "11/30/" + end_date_year;
}
november_date = november_date_datestring.todate("MM/d/yyyy");
info november_date;
if(november_date >= start_date && november_date <= end_date)
{
rev_rec_november = (subtotal2 / service_length).round(2);
}
else
{
rev_rec_november = 0.0;
}
//December Revenue
if(12 >= start_date_month)
{
december_date_datestring = "12/31/" + start_date_year;
}
else
{
december_date_datestring = "12/31/" + end_date_year;
}
december_date = december_date_datestring.todate("MM/d/yyyy");
info december_date;
if(december_date >= start_date && december_date <= end_date)
{
rev_rec_december = (subtotal2 / service_length).round(2);
}
else
{
rev_rec_december = 0.0;
}
// January Revenue
if(1 >= start_date_month)
{
january_date_datestring = "01/31/" + start_date_year;
}
else
{
january_date_datestring = "01/31/" + end_date_year;
}
january_date = january_date_datestring.todate("MM/d/yyyy");
info january_date;
if(january_date >= start_date && january_date <= end_date)
{
rev_rec_january = (subtotal2 / service_length).round(2);
}
else
{
rev_rec_january = 0.0;
}
//February Revenue
if(2 >= start_date_month)
{
february_date_datestring = "02/28/" + start_date_year;
}
else
{
february_date_datestring = "02/28/" + end_date_year;
}
february_date = february_date_datestring.todate("MM/d/yyyy");
info february_date;
if(february_date >= start_date && february_date <= end_date)
{
rev_rec_february = (subtotal2 / service_length).round(2);
}
else
{
rev_rec_february = 0.0;
}
// March Revenue
if(3 >= start_date_month)
{
march_date_datestring = "03/31/" + start_date_year;
}
else
{
march_date_datestring = "03/31/" + end_date_year;
}
march_date = march_date_datestring.todate("MM/d/yyyy");
info march_date;
if(march_date >= start_date && march_date <= end_date)
{
rev_rec_march = (subtotal2 / service_length).round(2);
}
else
{
rev_rec_march = 0.0;
}
//map all revenue fields
mp = {"April_Revenue":rev_rec_april,"June_Revenue":rev_rec_june,"May_Revenue":rev_rec_may,"July_Revenue":rev_rec_july,"August_Revenue":rev_rec_august,"September_Revenue":rev_rec_september,"October_Revenue":rev_rec_october,"November_Revenue":rev_rec_november,"December_Revenue":rev_rec_december,"January_Revenue":rev_rec_january,"February_Revenue":rev_rec_february,"March_Revenue":rev_rec_march};
info mp;
//update the record
update_resp = zoho.crm.updateRecord("Invoices",invoice_id,mp);
info update_resp;