map Books.Purchase_Order(int var) { //Getting authtoken and organisation id books_access = thisapp.Books.Get_Books_Access(); conn_tok = books_access.get("connection"); org_id = books_access.get("organisation_id"); //------------------------------------------------------------------------- fetchpo = Purchase_Order[ID == input.var]; fetchposf = Purchase_Order_Subform[Purchase_Order_ExisID == fetchpo]; fetchven = Vendor[ID == fetchpo.Vendor_Name]; //fetchshipp = Shipping_Mode[ID == fetchpo.Shipping_Mode]; fetchwarehouse = Warehouse[ID == fetchpo.Deliver_To].Warehouse_Books_ID; //info fetchwarehouse; fettax = GST_Details[ID == fetchpo.Item_Details.Tax]; fetch_del_schd = Delivery_Schedule[Purchase_Order_Exis_ID == input.var].maximum(Delivery_Date); fetch_payment_trms = Payment_Terms[ID == fetchpo.Payment_Terms]; delivery_date = fetch_del_schd.toString("yyyy-MM-dd"); //info "fetchpo.Zoho_Books_ID" + fetchpo.Zoho_Books_ID; if(fetchpo.Zoho_Books_ID == "" || fetchpo.Zoho_Books_ID == null) { //info "Insidee"; pomap = Map(); pomap.put("customer",fetchven.Vendor_Name); pomap.put("purchaseorder_number",fetchpo.Purchase_Order_No); pomap.put("vendor_id",fetchven.ZOHO_Books_ID); pomap.put("purchaseorder_number",fetchpo.Purchase_Order_No); po2 = fetchpo.Purchase_Order_Date.toString("yyyy-MM-dd"); pomap.put("phone",fetchven.Mobile); pomap.put("email",fetchven.Email_ID); pomap.put("date",po2); pomap.put("cf_payment_terms",fetch_payment_trms.Stages); //info url_to_po; pomap.put("delivery_date",delivery_date); pomap.put("delivery_address",fetchpo.Shipping_Address); url_to_po = "https://creatorapp.zoho.in/carrierwheels/erp/#Page:PO_Template?ID=" + var; //new_url_to_po = "<a href='https://creatorapp.zoho.in/carrierwheels/erp/#Page:PO_Template?ID=" + var + "' target='_blank' title='Open PO'>Download PO from ERP</a>"; custom_list = List(); custom_map = Map(); custom_map.put("api_name","cf_download_po_from_erp"); custom_map.put("value",url_to_po); custom_list.add(custom_map); pomap.put("custom_fields",custom_list); //pomap.put("status", "Open"); item_list = List(); //info pomap; tx_val = 0; for each rec in fetchpo.Item_Details { fetchitem = Materials[ID == rec.Part_Description]; //info fetchitem; line_item_map = Map(); //custom_list1 = List(); //custom_map1 = Map(); line_item_map.put("name",rec.Part_Description.Part_Description); line_item_map.put("item_id",fetchitem.Zoho_Books_ID); mfrPartNo = ""; if(fetchitem.Mfr_Part_No != "") { mfrPartNo = "Manufacturer Part No: " + fetchitem.Mfr_Part_No; } myspecs = ""; if(rec.Specification != null) { myspecs = "Specifications: " + rec.Specification + "\n"; } myremarks = ""; if(rec.Remarks != null) { myremarks = "Remarks: " + rec.Remarks + "\n"; } line_item_map.put("description",myspecs + myremarks + mfrPartNo); //line_item_map.put("description",rec.Part_Description.Specification); line_item_map.put("quantity",rec.Ordered_Qty); line_item_map.put("rate",rec.Rate); line_item_map.put("warehouse_name",fetchwarehouse); line_item_map.put("tax_id",fettax.Zoho_Books_ID); line_item_map.put("tax_percentage",fettax.Total_Rate); // custom_map1.put("api_name","cf_posubformid"); // custom_map1.put("value",rec.ID); // custom_list1.add(custom_map1); // line_item_map.put("custom_fields",custom_list1); item_list.add(line_item_map); tx_val = tx_val + ifnull(rec.Tax_Value,0.00); } //info item_list; for each extra in Additional_Charges_Subform[Purchase_Order_Exis_ID == input.var] { line_item_map = Map(); line_item_map.put("name",extra.Charge_Name.Zoho_Books_ID); line_item_map.put("rate",extra.Rate); line_item_map.put("quantity",1); line_item_map.put("item_total",extra.Total); line_item_map.put("tax_id",extra.Tax.Zoho_Books_ID); line_item_map.put("tax_percentage",fettax.Total_Rate); item_list.add(line_item_map); } pomap.put("tax_total",tx_val); pomap.put("line_items",item_list); post_url = zoho.books.createRecord("purchaseorders",org_id,pomap,conn_tok); //info "Url:" + post_url; res_code = post_url.get("code").toLong(); resp_Map = Map(); log_type = "Failure"; //info "rescode " + res_code; varconn = API_Connections[Module_Name == "Zoho Books"].Connection; if(res_code == 0) { log_type = "Success"; books_id = post_url.toMap().get("purchaseorder").toMap().get("purchaseorder_id"); fetchpo.Zoho_Books_ID=books_id; test_map = Map(); mark_response = invokeurl [ url :"https://www.zohoapis.in/books/v3/purchaseorders/" + books_id + "/status/open?organization_id=" + org_id + "" type :POST parameters:test_map connection:"books_con" ]; //old api is commented and new api is in above as per Zoho // mark_response = invokeurl // [ // url :"https://www.zohoapis.in/books/v3/purchaseorders/" + books_id + "/status/open?organization_id=" + org_id + "" // type :POST // parameters:test_map // connection:"books_con" // ]; //info mark_response; } if(res_code == 0) { getinventory = zoho.inventory.getRecordsByID("purchaseorders",org_id,books_id); get_line_item = getinventory.toMap().get("purchaseorder").toMap().get("line_items"); for each lineitem in get_line_item { lineitemid = lineitem.getjson("line_item_id"); itemid = lineitem.getjson("item_id"); itemorder = lineitem.getjson("item_order"); //array = {"custom_fields":{{"api_name":"cf_posubformid","value":cfposfid}}}; fetchpo = Purchase_Order[Zoho_Books_ID == books_id]; //fetchposf = Purchase_Order_Subform[Purchase_Order_ExisID == fetchpo.ID]; getmat = Materials[Zoho_Books_ID == itemid]; fetchposf = Purchase_Order_Subform[Purchase_Order_ExisID == fetchpo.ID && S_No == itemorder && Part_No == getmat.ID]; fetchposf.zb_line_item_id=lineitemid; // for each posfrec in fetchposf // { // if(posfrec.Part_No == getmat.ID) // { // posfrec.zb_line_item_id=lineitemid; // } // } } } //Insert into Log Form ins_log = insert into Log_Files [ Added_User=zoho.loginuser Module_Name="Purchase Order" Form_Name="Purchase Order" Log_Details=post_url Log_Type=log_type Reference_NO=fetchpo.Purchase_Order_No ]; //sending error log message if(log_type == "Failure") { resp_Map.put("Resp","Failure"); resp_Map.put("log_msg",post_url.get("message")); } //status to changed // updtstatus = zoho.books.markStatus("purchaseorders",org_id,books_id,"Open",conn_tok); // info updtstatus; //When the log type is failure and rescode is code:57,message:You are not authorized to perform this operation" and try again call the function again after 5 minutes using the below function if(res_code == 57 && log_type == "Failure") { insert into Failure_Functions_re_schedule_form [ Added_User=zoho.loginuser Module_name="Purchase Order" module_record_id=var Schedule_date_time=zoho.currenttime.addMinutes(5) ] //send mail sendmail [ from :"erp@carrierwheels.com" to :"parthasarathy.m@synprosoft.com" subject :"Purchase Order Not pushed to Books" + var message :"Purchase Order Not pushed to Books" + var ] } } return resp_Map; }