Friday, 2 February 2018

Generate dialog box and get and select value and set in another doctype

//popup

var d = new frappe.ui.Dialog({
  title: __("Get Item from Quote"),
  fields: [

      {
        "label": __("Quotation"),
        "fieldname": "quotation",
        "fieldtype": "Link",
        "options": "Quotation",
        "reqd": 1
      },
      {
        "fieldname":"sb1",
        "fieldtype":"Section Break",
      },
      {
        "label": __("html"),
        "fieldname": "my_html",
        "fieldtype": "HTML",
        "options" : "Items from quote<br>",
      },
      {
        "label": __("Add Items"),
        "fieldname": "Add Items",
        "fieldtype": "Button",
        "class":"add_items",
        "options" : "Add Items from quote<br>",
      },
      ],
      primary_action_label: "Get Items",
      // secondary_action_label: "Add Items",
      primary_action: function(){
       //msgprint("hi");
       args = d.get_values();
       if(!args) return;
       // console.log(args.quotation);
       qtn_no = args.quotation;
       frappe.call({
           method: "frappe.client.get_list",
           args: {
               doctype: "Quotation Item",
               fields: ["item_code", "item_name","qty","name","rate","amount"],
               filters: { 'parent':  qtn_no },
           },
              callback: function(res){

                if (res && res.message){
                  console.log("res",res)
                  html = "Items from<br>"
                  html += "<table border=1 style='width:100%' >"
                            +"<tr><th>Code</th><th>Name</th><th>Quantity</th><th>Rate</th><th>Amount</th></tr>"
                            // +"<tr>"
                            for (var i = 0; i<res.message.length; i=i+1) {
                              // html += "<tr><td>" +"<p><input type='checkbox' class='select' name='sport' value='+res.message[i].item_code' id='select' </p>"+"</td><td>" +res.message[i].item_code+"</td><td>"
                             html +="<tr><td>"+ "<p><input type='checkbox' class='select' id='select' name='items'"
                                    +"' value='"
                                +res.message[i].item_code
                                    +","
                                +res.message[i].item_name
                                    +","
                                +res.message[i].qty
                                    +","
                                +res.message[i].rate
                                    +","
                                +res.message[i].amount
                                    +"'> "
                                    +res.message[i].item_code
                                    + "</p></td><td>"
                              +res.message[i].item_name+"</td><td>"
                              +res.message[i].qty+"</td><td>"
                              +res.message[i].rate+"</td><td>"
                              +res.message[i].amount+"</td></tr>"
                          }                       
                        +"</table>"
                  $("#select").append("sam");
                  var wrapper = d.fields_dict.my_html.$wrapper;
                  wrapper.empty();
                  wrapper.html(html);
                }
               
              }   
       });
     
     }
 });
d.show();

var item_list = [];
var list=[];
$("button:contains('Add Items')").click(function(){

            $.each($("input[name='items']:checked"), function(){           
                item_list.push($(this).val());

            });
            console.log("Selected Items are: " + item_list.join(", "));
            list.push(item_list.join(", "));
            console.log(list)

            item_list.forEach(function(element) {
              console.log("length of element is :",element.length)
              var row = frappe.model.add_child(cur_frm.doc, "Sales Order Item", "items");
              list=element.split(",")
              console.log("list of element :",list);
              row.item_code = list[0];
              row.item_name =list[1];
              row.qty=list[2];
              row.rate = list[3];
              row.amount = list[4];
              //add child
              console.log("in row",row)
            });
             refresh_field("items");
             console.log("items",item_list)
});

No comments:

Post a Comment

Django rest api - filter

views.py from django_filters.rest_framework import DjangoFilterBackend class PollList(viewsets.ModelViewSet):     queryset = X.objects...