organizationId = "868846676";
///// Customer Section ////
customerEmail = data.get("BillEmail_Address").toList().get(0);
// info customerEmail;
// Search for the contact in Zoho Books by email
search_params = Map();
search_params.put("email",customerEmail);
search_response = zoho.books.getRecords("contacts",organizationId,search_params,"zoho_books");
// info search_response;
if(search_response.get("code") == 0 && search_response.get("contacts").size() > 0)
{
// Contact exists, retrieve the contact ID
contact_id = search_response.get("contacts").get(0).get("contact_id");
// info "Contact already exists. Contact ID: " + contact_id;
}
else
{
// Contact doesn't exist, create a new contact
contactPerson = Map();
customerName = data.get("CustomerRef_name");
if(customerName.contains(" "))
{
contactPerson.put("first_name",customerName.getPrefix(" "));
contactPerson.put("last_name",customerName.getSuffix(" "));
}
else
{
contactPerson.put("last_name",customerName);
}
contactPerson.put("email",customerEmail);
contact_map = Map();
contact_map.put("contact_name",data.get("CustomerRef_name"));
contact_map.put("contact_type","customer");
contact_map.put("contact_persons",contactPerson.toList());
create_response = zoho.books.createRecord("contacts",organizationId,contact_map,"zoho_books");
// info create_response;
if(create_response.get("code") == 0)
{
// New contact created, retrieve the contact ID
contact_id = create_response.get("contact").get("contact_id");
// info "New contact created. Contact ID: " + contact_id;
}
else
{
// Handle error while creating the contact
// info "Error creating contact: " + create_response.get("message");
}
}
/////////////////////////// Customer Section Ends //////////////////////
//////////////////////////// Item Section ///////////////////////////
lines = data.get("Line");
booksLineItems = List();
for each line in lines
{
if(line.containsKey("Id"))
{
amount = line.get("Amount");
description = line.get("Description");
SalesItemLineDetail = line.get("SalesItemLineDetail");
qty = SalesItemLineDetail.get("Qty");
itemName = SalesItemLineDetail.get("ItemRef").get("name");
itemQuery = Map();
itemQuery.put("name",itemName);
searchItemResp = zoho.books.getRecords("Items",organizationId,itemQuery,"zoho_books");
// info searchItemResp;
items = searchItemResp.get("items");
if(items.size() > 0)
{
itemId = items.get(0).get("item_id");
}
else
{
itemMap = Map();
itemMap.put("name",itemName);
createItemResp = zoho.books.createRecord("Items",organizationId,itemMap,"zoho_books");
// info createItemResp;
itemId = createItemResp.get("item").get("item_id");
}
lineItemMap = Map();
lineItemMap.put("item_id",itemId);
lineItemMap.put("description",description);
lineItemMap.put("quantity",qty);
lineItemMap.put("rate",amount);
booksLineItems.add(lineItemMap);
}
else
{
if(line.get("DetailType") == "SalesItemLineDetail")
{
if(line.get("SalesItemLineDetail").get("ItemRef").get("value") == "SHIPPING_ITEM_ID")
{
shippingCharges = line.get("Amount");
}
}
}
}
// info booksLineItems;
// info shippingCharges;
////////////////////////// END of Items ///////////////////////////////
invoiceMap = Map();
invoiceMap.put("customer_id",contact_id);
invoiceMap.put("line_items",booksLineItems);
invoiceMap.put("date",data.get("TxnDate"));
invoiceMap.put("due_date",data.get("DueDate"));
invoiceMap.put("reference_number",data.get("DocNumber"));
if(!isNull(shippingCharges))
{
invoiceMap.put("shipping_charge",shippingCharges);
}
info "Map = " + invoiceMap;
createInvoiceResp = zoho.books.createRecord("invoices",organizationId,invoiceMap,"zoho_books");
info "Creating Invoice = " + createInvoiceResp.get("message");
if(createInvoiceResp.get("message") == "The invoice has been created.")
{
invoiceId = createInvoiceResp.get("invoice").get("invoice_id");
markInvoiceSent = invokeurl
[
url :"https://www.zohoapis.com/books/v3/invoices/" + invoiceId + "/status/sent?organization_id=" + organizationId
type :POST
connection:"zoho_books"
];
info "Mark Invoice as Sent = " + markInvoiceSent.get("message");
}