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"); }