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;
}
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter