From ecac02b0d68aa3a76e2de62b272ba1dc1984fe0c Mon Sep 17 00:00:00 2001 From: reshma1 Date: Mon, 9 Oct 2017 16:29:17 +0530 Subject: [PATCH 01/11] CESS option is added in select tax combo box --- gkwebapp/static/js/addproduct.js | 11 +++++++---- gkwebapp/templates/addproduct.jinja2 | 23 ++++++++++++----------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/gkwebapp/static/js/addproduct.js b/gkwebapp/static/js/addproduct.js index e3f2dcba..99225c94 100644 --- a/gkwebapp/static/js/addproduct.js +++ b/gkwebapp/static/js/addproduct.js @@ -434,6 +434,7 @@ $("#addcatselect").change(function(event) { ''+ ''+ ''+ + ''+ ''+ ''+ ''+ @@ -545,6 +546,7 @@ $("#addcatselect").change(function(event) { ''+ ''+ ''+ + ''+ ''+ ''+ ''+ @@ -718,11 +720,11 @@ $(document).off("keydown",".tax_name").on("keydown",".tax_name",function(event) $('#product_tax_table tbody tr:eq('+curindex+') td:eq(1) select').focus(); event.preventDefault(); } - else if (($("#product_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val()=='CVAT' || $("#product_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val()=='IGST') && event.which==13 ) { + else if (($("#product_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val()=='CVAT' || $("#product_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val()=='IGST' || $("#product_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val()=='CESS') && event.which==13 ) { event.preventDefault(); var types = []; $('#product_tax_table tbody tr').each(function(){ - if ($(".tax_name",this).val()=='CVAT' || $(".tax_name",this).val()=='IGST' ) { + if ($(".tax_name",this).val()=='CVAT' || $(".tax_name",this).val()=='IGST' || $(".tax_name",this).val()=='CESS' ) { types.push($(".tax_name",this).val()); } }); @@ -815,7 +817,7 @@ $(document).off("change",".tax_name").on("change",".tax_name",function(event) if (curindex > 0) { for (var i = 1; i < curindex+1; i++) { for (var j = 0; j < curindex; j++) { - if ($("#product_tax_table tbody tr:eq("+i+") td:eq(0) select").val() == "CVAT" || $("#product_tax_table tbody tr:eq("+i+") td:eq(0) select").val() == "IGST" ) { + if ($("#product_tax_table tbody tr:eq("+i+") td:eq(0) select").val() == "CVAT" || $("#product_tax_table tbody tr:eq("+i+") td:eq(0) select").val() == "IGST" || $("#product_tax_table tbody tr:eq("+i+") td:eq(0) select").val() == "CESS" ) { i = i + 1; } selectedtaxstate = $("#product_tax_table tbody tr:eq("+j+") td:eq(1) select option:selected").attr("stateid"); @@ -924,6 +926,7 @@ $(document).off("keydown",".tax_rate").on("keydown",".tax_rate",function(event) ''+ ''+ ''+ + ''+ ''+ ''+ ''+ @@ -976,7 +979,7 @@ $(document).off("keydown",".tax_rate").on("keydown",".tax_rate",function(event) ''+ ''); $(".tax_rate").numeric(); - if (selectedtaxname == "CVAT" || selectedtaxname == "IGST" ) { + if (selectedtaxname == "CVAT" || selectedtaxname == "IGST" || selectedtaxname == "CESS") { $('#product_tax_table tbody tr:eq('+nextindex1+') td:eq(0) select option[value='+selectedtaxname+']').prop('hidden', true).prop('disabled', true); } $('#product_tax_table tbody tr:eq('+nextindex1+') td:eq(0) select').focus().select(); diff --git a/gkwebapp/templates/addproduct.jinja2 b/gkwebapp/templates/addproduct.jinja2 index c9e10957..6d8941c0 100644 --- a/gkwebapp/templates/addproduct.jinja2 +++ b/gkwebapp/templates/addproduct.jinja2 @@ -19,11 +19,11 @@ - +
- + {% if not gkresult["category"] %} - +
{% trans %}If you want to put this product under a category/sub-category, you must create a category first.{% endtrans %}
@@ -41,7 +41,7 @@
{% endif %} - +
@@ -74,7 +74,7 @@ {% trans %}Press 'Enter' key to save and 'Esc' key to cancel.{% endtrans %}
- +
@@ -82,7 +82,7 @@
- +
@@ -104,6 +104,7 @@ {%if vatorgstflag=='7' or vatorgstflag=='29' %} + {%endif%} @@ -170,15 +171,15 @@
See more.
- - +
-- GitLab From 51d995d6cb673391b9b0cdab4e75b6e68966d3da Mon Sep 17 00:00:00 2001 From: reshma1 Date: Tue, 10 Oct 2017 14:43:28 +0530 Subject: [PATCH 02/11] CESS option is added in Edit Product --- gkwebapp/static/js/editproduct.js | 38 +++++++++++++--------- gkwebapp/templates/editproductspecs.jinja2 | 5 +-- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/gkwebapp/static/js/editproduct.js b/gkwebapp/static/js/editproduct.js index 10ebab3b..ed17072e 100644 --- a/gkwebapp/static/js/editproduct.js +++ b/gkwebapp/static/js/editproduct.js @@ -17,12 +17,12 @@ $(document).ready(function() { $(".numtype").numeric(); }); - + if(sessionStorage.invflag==0){ $(".noinventory").hide(); $("#taxhelp3").hide(); $("#taxhelp4").show(); - + } $(document).off('blur', '.numtype').on('blur', '.numtype', function(event) { @@ -134,7 +134,7 @@ $(document).ready(function() { } else { $("#editproddesc").focus().select(); - + } @@ -290,7 +290,7 @@ $("#product_edit_tax_table tbody tr:first td:eq(0) select").focus(); $('#product_edit_tax_table tbody tr').remove(); - + for (tax of resp["gkresult"]) { $('#product_edit_tax_table tbody').append(''+ taxhtml + ''); $('#product_edit_tax_table tbody tr:last td:last').append(''); @@ -484,11 +484,11 @@ $("#product_edit_tax_table tbody tr:first td:eq(0) select").focus(); event.preventDefault(); if ($("#catg").val()){ $("#editcatselect").focus(); - + } else { $("#editproddesc").focus().select(); - + } $(".godownflag").show(); @@ -496,7 +496,7 @@ $("#product_edit_tax_table tbody tr:first td:eq(0) select").focus(); $(".product_cat_tax_disable").prop('disabled',false); $(".product_tax_disable").prop('disabled',false); $("#product_edit_tax_table tbody tr").each(function() { - if($('td:eq(0) select option:selected', this).val() == 'CVAT' || $('td:eq(0) select option:selected', this).val() =='IGST' ){ + if($('td:eq(0) select option:selected', this).val() == 'CVAT' || $('td:eq(0) select option:selected', this).val() =='IGST' || $('td:eq(0) select option:selected', this).val() =='CESS' ){ $('td:eq(1) select', this).prop('disabled', true); } }); @@ -648,13 +648,16 @@ $("#product_edit_tax_table tbody tr:first td:eq(0) select").focus(); $('#product_edit_tax_table tbody tr:eq('+curindex+') td:eq(1) select').focus(); event.preventDefault(); } - else if (($("#product_edit_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val()=='CVAT' || $("#product_edit_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val() =='IGST' ) && event.which==13 ) { + else if (($("#product_edit_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val()=='CVAT' || $("#product_edit_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val() =='IGST' || $("#product_edit_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val() =='CESS') && event.which==13 ) { event.preventDefault(); var types = []; $('#product_edit_tax_table tbody tr').each(function(){ if($(".tax_name",this).val()=='IGST') { types.push($(".tax_name",this).val()); } + if($(".tax_name",this).val()=='CESS') { + types.push($(".tax_name",this).val()); + } if ($(".tax_name",this).val()=='CVAT') { types.push($(".tax_name",this).val()); } @@ -751,7 +754,7 @@ $("#product_edit_tax_table tbody tr:first td:eq(0) select").focus(); if (curindex > 0) { for (var i = 1; i < curindex+1; i++) { for (var j = 0; j < curindex; j++) { - if ($("#product_edit_tax_table tbody tr:eq("+i+") td:eq(0) select").val() == "CVAT" || $("#product_edit_tax_table tbody tr:eq("+i+") td:eq(0) select").val() == "IGST") { + if ($("#product_edit_tax_table tbody tr:eq("+i+") td:eq(0) select").val() == "CVAT" || $("#product_edit_tax_table tbody tr:eq("+i+") td:eq(0) select").val() == "IGST" || $("#product_edit_tax_table tbody tr:eq("+i+") td:eq(0) select").val() == "CESS") { i = i + 1; } selectedtaxstate = $("#product_edit_tax_table tbody tr:eq("+j+") td:eq(1) select option:selected").attr("stateid"); @@ -825,7 +828,7 @@ $("#product_edit_tax_table tbody tr:first td:eq(0) select").focus(); var previndex1 = curindex1-1; if (event.which==13) { event.preventDefault(); - if ($('#product_edit_tax_table tbody tr:eq('+curindex1+') td:eq(0) select option:selected').val()=="IGST" && $("#vatorgstflag").val()!='29') { + if ($('#product_edit_tax_table tbody tr:eq('+curindex1+') td:eq(0) select option:selected').val()=="IGST" || $('#product_edit_tax_table tbody tr:eq('+curindex1+') td:eq(0) select option:selected').val()=="CESS" && $("#vatorgstflag").val()!='29') { if ($("#invflag").val()==0){ $("#epsubmit").focus(); } @@ -883,6 +886,7 @@ $("#product_edit_tax_table tbody tr:first td:eq(0) select").focus(); ''+ ''+ ''+ + ''+ ''+ ''+ ''+ @@ -935,7 +939,7 @@ $("#product_edit_tax_table tbody tr:first td:eq(0) select").focus(); ''+ ''); $(".tax_rate").numeric(); - if (selectedtaxname == "CVAT" || selectedtaxname == "IGST") { + if (selectedtaxname == "CVAT" || selectedtaxname == "IGST" || selectedtaxname == "CESS") { $('#product_edit_tax_table tbody tr:eq('+nextindex1+') td:eq(0) select option[value='+selectedtaxname+']').prop('hidden', true).prop('disabled', true); } $('#product_edit_tax_table tbody tr:eq('+nextindex1+') td:eq(0) select').focus().select(); @@ -1232,15 +1236,19 @@ $("#product_edit_tax_table tbody tr:first td:eq(0) select").focus(); $("#product_edit_tax_table tbody tr").each(function(index){ if ($.trim($('#product_edit_tax_table tbody tr:eq('+index+') td:eq(0) select option:selected').val())=="") { taxflag=1; - + } if ($.trim($('#product_edit_tax_table tbody tr:eq('+index+') td:eq(0) select option:selected').val())=="IGST") { igstflag=1; } - + + if ($.trim($('#product_edit_tax_table tbody tr:eq('+index+') td:eq(0) select option:selected').val())=="CESS") { + igstflag=1; + } + }); - + if(taxflag){ $("#tax-alert").alert(); $("#tax-alert").fadeTo(2250, 500).slideUp(500, function(){ @@ -1365,7 +1373,7 @@ $("#product_edit_tax_table tbody tr:first td:eq(0) select").focus(); event.stopPropagation(); }); - + $('#epdelete').click(function(event) { event.preventDefault(); var gsflag = $("#gsflag").val(); diff --git a/gkwebapp/templates/editproductspecs.jinja2 b/gkwebapp/templates/editproductspecs.jinja2 index 551822db..f40a4434 100644 --- a/gkwebapp/templates/editproductspecs.jinja2 +++ b/gkwebapp/templates/editproductspecs.jinja2 @@ -67,7 +67,7 @@
{%endif%}
- + {% if prodspecs|length > 0 %}
@@ -113,7 +113,7 @@
- {% endif %} + {% endif %}
@@ -141,6 +141,7 @@ {%if vatorgstflag=='7' or vatorgstflag=='29'%} + {%endif%} -- GitLab From ee3635dc9c90aec98fe112b5ba8a0d585f8c1a80 Mon Sep 17 00:00:00 2001 From: reshma1 Date: Tue, 10 Oct 2017 16:34:52 +0530 Subject: [PATCH 03/11] small bug is removed from edit product --- gkwebapp/static/js/editproduct.js | 9 +-------- gkwebapp/views/product.py | 9 ++++----- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/gkwebapp/static/js/editproduct.js b/gkwebapp/static/js/editproduct.js index ed17072e..68ee1602 100644 --- a/gkwebapp/static/js/editproduct.js +++ b/gkwebapp/static/js/editproduct.js @@ -1306,14 +1306,7 @@ $("#product_edit_tax_table tbody tr:first td:eq(0) select").focus(); taxes.push(obj); } }); - for (tax of existingnonetax) { - let obj = {}; - obj.taxrowid = tax["taxid"]; - obj.taxname = tax["taxname"]; - obj.state = tax["state"]; - obj.taxrate = tax["taxrate"]; - taxes.push(obj); - } + var obj = {}; $("#editgodown_ob_table tbody tr").each(function(){ if ($.trim($(".editgodown_name",this).val())!="") { diff --git a/gkwebapp/views/product.py b/gkwebapp/views/product.py index 0d0eed53..a9afe3a7 100644 --- a/gkwebapp/views/product.py +++ b/gkwebapp/views/product.py @@ -241,11 +241,10 @@ def editproduct(request): taxresult = requests.delete("http://127.0.0.1:6543/tax",data=json.dumps(taxdata) ,headers=header) for tax in taxes: if len(tax)!=0: - if tax["taxrowid"]=="new": - taxdata= {"taxname":tax["taxname"],"taxrate":float(tax["taxrate"]),"productcode":proddetails["productcode"]} - if tax["state"]!='': - taxdata["state"]=tax["state"] - taxresult = requests.post("http://127.0.0.1:6543/tax",data=json.dumps(taxdata) ,headers=header) + taxdata= {"taxname":tax["taxname"],"taxrate":float(tax["taxrate"]),"productcode":proddetails["productcode"]} + if tax["state"]!='': + taxdata["state"]=tax["state"] + taxresult = requests.post("http://127.0.0.1:6543/tax",data=json.dumps(taxdata) ,headers=header) return {"gkstatus": result.json()["gkstatus"]} @view_config(route_name="product",request_param="type=delete", renderer="json") -- GitLab From 7290993874de1ff07ab71bad0e3f8fe8211eb503 Mon Sep 17 00:00:00 2001 From: abhi1tb Date: Wed, 11 Oct 2017 07:42:46 +0530 Subject: [PATCH 04/11] Untabified product.py. Product templates now gets states from backend. --- gkwebapp/templates/editproductspecs.jinja2 | 44 +- gkwebapp/views/product.py | 1226 ++++++++++---------- 2 files changed, 621 insertions(+), 649 deletions(-) diff --git a/gkwebapp/templates/editproductspecs.jinja2 b/gkwebapp/templates/editproductspecs.jinja2 index f40a4434..a4667465 100644 --- a/gkwebapp/templates/editproductspecs.jinja2 +++ b/gkwebapp/templates/editproductspecs.jinja2 @@ -9,7 +9,7 @@
- + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + {% for state in states %} + {% for key, value in state.items() %} + + {% endfor %} + {% endfor %} diff --git a/gkwebapp/views/product.py b/gkwebapp/views/product.py index a9afe3a7..61c522e4 100644 --- a/gkwebapp/views/product.py +++ b/gkwebapp/views/product.py @@ -41,736 +41,740 @@ from odslib import ODS @view_config(route_name="product",request_param="type=tab", renderer="gkwebapp:templates/producttab.jinja2") def showproducttab(request): - header={"gktoken":request.headers["gktoken"]} - result = requests.get("http://127.0.0.1:6543/products",headers=header) - return{"numberofproducts":len(result.json()["gkresult"]),"gkstatus":result.json()["gkstatus"]} + header={"gktoken":request.headers["gktoken"]} + result = requests.get("http://127.0.0.1:6543/products",headers=header) + return{"numberofproducts":len(result.json()["gkresult"]),"gkstatus":result.json()["gkstatus"]} @view_config(route_name="product",request_param="type=addtabvat", renderer="gkwebapp:templates/addproductvat.jinja2") def addProductTabVat(request): - header={"gktoken":request.headers["gktoken"]} - result = requests.get("http://127.0.0.1:6543/categories", headers=header) - result1 = requests.get("http://127.0.0.1:6543/unitofmeasurement?qty=all", headers=header) - result2 = requests.get("http://127.0.0.1:6543/godown", headers=header) - return{"gkresult":{"category":result.json()["gkresult"],"uom":result1.json()["gkresult"]},"godown":result2.json()["gkresult"],"gkstatus":result.json()["gkstatus"]} + header={"gktoken":request.headers["gktoken"]} + result = requests.get("http://127.0.0.1:6543/categories", headers=header) + result1 = requests.get("http://127.0.0.1:6543/unitofmeasurement?qty=all", headers=header) + result2 = requests.get("http://127.0.0.1:6543/godown", headers=header) + states = requests.get("http://127.0.0.1:6543/state", headers=header) + return{"gkresult":{"category":result.json()["gkresult"],"uom":result1.json()["gkresult"]},"godown":result2.json()["gkresult"],"gkstatus":result.json()["gkstatus"], "states": states.json()["gkresult"]} @view_config(route_name="product",request_param="type=addtab", renderer="gkwebapp:templates/addproduct.jinja2") def addproducttab(request): - header={"gktoken":request.headers["gktoken"]} - result = requests.get("http://127.0.0.1:6543/categories", headers=header) - result1 = requests.get("http://127.0.0.1:6543/unitofmeasurement?qty=all", headers=header) - result2 = requests.get("http://127.0.0.1:6543/godown", headers=header) - resultgstvat = requests.get("http://127.0.0.1:6543/products?tax=vatorgst",headers=header) - return{"gkresult":{"category":result.json()["gkresult"],"uom":result1.json()["gkresult"]},"godown":result2.json()["gkresult"],"gkstatus":result.json()["gkstatus"],"vatorgstflag":resultgstvat.json()["gkresult"]} + header={"gktoken":request.headers["gktoken"]} + result = requests.get("http://127.0.0.1:6543/categories", headers=header) + result1 = requests.get("http://127.0.0.1:6543/unitofmeasurement?qty=all", headers=header) + result2 = requests.get("http://127.0.0.1:6543/godown", headers=header) + resultgstvat = requests.get("http://127.0.0.1:6543/products?tax=vatorgst",headers=header) + states = requests.get("http://127.0.0.1:6543/state", headers=header) + return{"gkresult":{"category":result.json()["gkresult"],"uom":result1.json()["gkresult"]},"godown":result2.json()["gkresult"],"gkstatus":result.json()["gkstatus"],"vatorgstflag":resultgstvat.json()["gkresult"], "states": states.json()["gkresult"]} @view_config(route_name="product",request_param="type=specs", renderer="gkwebapp:templates/addproductspecs.jinja2") def getcatspecs(request): - header={"gktoken":request.headers["gktoken"]} - result = requests.get("http://127.0.0.1:6543/categoryspecs?categorycode=%d"%(int(request.params["categorycode"])), headers=header) - return{"gkresult":result.json()["gkresult"],"gkstatus":result.json()["gkstatus"]} + header={"gktoken":request.headers["gktoken"]} + result = requests.get("http://127.0.0.1:6543/categoryspecs?categorycode=%d"%(int(request.params["categorycode"])), headers=header) + return{"gkresult":result.json()["gkresult"],"gkstatus":result.json()["gkstatus"]} @view_config(route_name="product",request_param="type=cattax", renderer="json") def getcattax(request): - header={"gktoken":request.headers["gktoken"]} - result = requests.get("http://127.0.0.1:6543/tax?pscflag=c&categorycode=%d"%(int(request.params["categorycode"])), headers=header) - return{"gkresult":result.json()["gkresult"],"gkstatus":result.json()["gkstatus"]} + header={"gktoken":request.headers["gktoken"]} + result = requests.get("http://127.0.0.1:6543/tax?pscflag=c&categorycode=%d"%(int(request.params["categorycode"])), headers=header) + return{"gkresult":result.json()["gkresult"],"gkstatus":result.json()["gkstatus"]} @view_config(route_name="product",request_param="by=category", renderer="json") def getprodbycat(request): - header={"gktoken":request.headers["gktoken"]} - if request.params["categorycode"]=="": - result = requests.get("http://127.0.0.1:6543/products?by=category&categorycode=", headers=header) - else: - result = requests.get("http://127.0.0.1:6543/products?by=category&categorycode=%d"%(int(request.params["categorycode"])), headers=header) + header={"gktoken":request.headers["gktoken"]} + if request.params["categorycode"]=="": + result = requests.get("http://127.0.0.1:6543/products?by=category&categorycode=", headers=header) + else: + result = requests.get("http://127.0.0.1:6543/products?by=category&categorycode=%d"%(int(request.params["categorycode"])), headers=header) - if len(result.json()["gkresult"])==0: - return{"gkresult":0,"gkstatus":result.json()["gkstatus"]} - else: - return{"gkresult":result.json()["gkresult"],"gkstatus":result.json()["gkstatus"]} + if len(result.json()["gkresult"])==0: + return{"gkresult":0,"gkstatus":result.json()["gkstatus"]} + else: + return{"gkresult":result.json()["gkresult"],"gkstatus":result.json()["gkstatus"]} '''This method is used to get opening stock and godown id's of given productcode(i.e. opening stock of a product in different godowns).''' @view_config(route_name="product",request_param="by=godown", renderer="json") def getgodownproduct(request): - header={"gktoken":request.headers["gktoken"]} - result = requests.get("http://127.0.0.1:6543/products?by=godown&productcode=%d"%int(request.params["productcode"]), headers=header) - return{"gkresult":result.json()["gkresult"],"gkstatus":result.json()["gkstatus"]} + header={"gktoken":request.headers["gktoken"]} + result = requests.get("http://127.0.0.1:6543/products?by=godown&productcode=%d"%int(request.params["productcode"]), headers=header) + return{"gkresult":result.json()["gkresult"],"gkstatus":result.json()["gkstatus"]} @view_config(route_name="product",request_param="type=prodtax", renderer="json") def getprodtax(request): - header={"gktoken":request.headers["gktoken"]} - result = requests.get("http://127.0.0.1:6543/tax?pscflag=p&productcode=%d"%(int(request.params["productcode"])), headers=header) - return{"gkresult":result.json()["gkresult"],"gkstatus":result.json()["gkstatus"]} + header={"gktoken":request.headers["gktoken"]} + result = requests.get("http://127.0.0.1:6543/tax?pscflag=p&productcode=%d"%(int(request.params["productcode"])), headers=header) + return{"gkresult":result.json()["gkresult"],"gkstatus":result.json()["gkstatus"]} @view_config(route_name="product",request_param="type=uom", renderer="json") def produom(request): - header={"gktoken":request.headers["gktoken"]} - result = requests.post("http://127.0.0.1:6543/unitofmeasurement", data=json.dumps({"unitname":request.params["unitname"]}),headers=header) - if result.json()["gkstatus"] ==0: - result = requests.get("http://127.0.0.1:6543/unitofmeasurement?qty=all", headers=header) - return {"gkstatus": result.json()["gkstatus"], "gkresult": result.json()["gkresult"]} - else: - return{"gkstatus":result.json()["gkstatus"]} + header={"gktoken":request.headers["gktoken"]} + result = requests.post("http://127.0.0.1:6543/unitofmeasurement", data=json.dumps({"unitname":request.params["unitname"]}),headers=header) + if result.json()["gkstatus"] ==0: + result = requests.get("http://127.0.0.1:6543/unitofmeasurement?qty=all", headers=header) + return {"gkstatus": result.json()["gkstatus"], "gkresult": result.json()["gkresult"]} + else: + return{"gkstatus":result.json()["gkstatus"]} @view_config(route_name="product",request_param="type=save", renderer="json") def saveproduct(request): - header={"gktoken":request.headers["gktoken"]} - prdspecs = {} - proddetails={} - productdetails={} - godownflag=False - taxes =0 - godowns={} - goid=0 - goopeningstock=0.00 - for prd in request.params: - - if prd=="type": - continue - elif prd=="godownflag": - if int(request.params[prd]) > 0: - godownflag=True - else: - godownflag=False - elif prd =="catselect": - if request.params[prd] !="": - proddetails["categorycode"] = request.params[prd] - elif prd == "addproddesc": - proddetails["productdesc"] = request.params[prd] - elif prd == "uom": - proddetails["uomid"] = request.params[prd] - elif prd == "openingstock": - proddetails["openingstock"] = request.params[prd] - elif prd == "taxes": - taxes = json.loads(request.params["taxes"]) - elif prd == "godowns": - godowns = json.loads(request.params["godowns"]) - elif prd == "newuom": - continue - else: - proddetails["specs"]= json.loads(request.params["specs"]) - - if request.params.has_key("gscode"): - proddetails["gscode"]=request.params["gscode"] - if request.params.has_key("gsflag"): - proddetails["gsflag"]=request.params["gsflag"] - else: - proddetails["gsflag"] = 7 - - productdetails = {"productdetails":proddetails, "godetails":godowns, "godownflag":godownflag} - if godownflag == True: - godnames = "" - j = 1; - for i in godowns.keys(): - resultgodown = requests.get("http://127.0.0.1:6543/godown?qty=single&goid=%d"%(int(i)), headers=header) - godnames += resultgodown.json()["gkresult"]["goname"] + "(" + resultgodown.json()["gkresult"]["goaddr"] + ")" - if j != len(godowns): - godnames += ", " - j += 1 - - result = requests.post("http://127.0.0.1:6543/products",data=json.dumps(productdetails),headers=header) - - if result.json()["gkstatus"] == 0: - if godownflag == True: - gkdata = {"activity":proddetails["productdesc"] + " product created in " + godnames + " godowns"} - else: - gkdata = {"activity":proddetails["productdesc"] + " product created"} - resultlog = requests.post("http://127.0.0.1:6543/log", data =json.dumps(gkdata),headers=header) - - if result.json()["gkstatus"] == 0: - if len(taxes)>0: - for tax in taxes: - taxdata= {"taxname":tax["taxname"],"taxrate":float(tax["taxrate"]),"productcode":result.json()["gkresult"]} - if tax["state"]!='': - taxdata["state"]=tax["state"] - - taxresult = requests.post("http://127.0.0.1:6543/tax",data=json.dumps(taxdata) ,headers=header) - return {"gkstatus": result.json()["gkstatus"]} + header={"gktoken":request.headers["gktoken"]} + prdspecs = {} + proddetails={} + productdetails={} + godownflag=False + taxes =0 + godowns={} + goid=0 + goopeningstock=0.00 + for prd in request.params: + + if prd=="type": + continue + elif prd=="godownflag": + if int(request.params[prd]) > 0: + godownflag=True + else: + godownflag=False + elif prd =="catselect": + if request.params[prd] !="": + proddetails["categorycode"] = request.params[prd] + elif prd == "addproddesc": + proddetails["productdesc"] = request.params[prd] + elif prd == "uom": + proddetails["uomid"] = request.params[prd] + elif prd == "openingstock": + proddetails["openingstock"] = request.params[prd] + elif prd == "taxes": + taxes = json.loads(request.params["taxes"]) + elif prd == "godowns": + godowns = json.loads(request.params["godowns"]) + elif prd == "newuom": + continue + else: + proddetails["specs"]= json.loads(request.params["specs"]) + + if request.params.has_key("gscode"): + proddetails["gscode"]=request.params["gscode"] + if request.params.has_key("gsflag"): + proddetails["gsflag"]=request.params["gsflag"] + else: + proddetails["gsflag"] = 7 + + productdetails = {"productdetails":proddetails, "godetails":godowns, "godownflag":godownflag} + if godownflag == True: + godnames = "" + j = 1; + for i in godowns.keys(): + resultgodown = requests.get("http://127.0.0.1:6543/godown?qty=single&goid=%d"%(int(i)), headers=header) + godnames += resultgodown.json()["gkresult"]["goname"] + "(" + resultgodown.json()["gkresult"]["goaddr"] + ")" + if j != len(godowns): + godnames += ", " + j += 1 + + result = requests.post("http://127.0.0.1:6543/products",data=json.dumps(productdetails),headers=header) + + if result.json()["gkstatus"] == 0: + if godownflag == True: + gkdata = {"activity":proddetails["productdesc"] + " product created in " + godnames + " godowns"} + else: + gkdata = {"activity":proddetails["productdesc"] + " product created"} + resultlog = requests.post("http://127.0.0.1:6543/log", data =json.dumps(gkdata),headers=header) + + if result.json()["gkstatus"] == 0: + if len(taxes)>0: + for tax in taxes: + taxdata= {"taxname":tax["taxname"],"taxrate":float(tax["taxrate"]),"productcode":result.json()["gkresult"]} + if tax["state"]!='': + taxdata["state"]=tax["state"] + + taxresult = requests.post("http://127.0.0.1:6543/tax",data=json.dumps(taxdata) ,headers=header) + return {"gkstatus": result.json()["gkstatus"]} @view_config(route_name="product",request_param="type=edit", renderer="json") def editproduct(request): - header={"gktoken":request.headers["gktoken"]} - proddetails={} - productdetails={} - taxes =0 - taxdata = {} - godownflag=False - godowns={} - goid=0 - goopeningstock=0.00 - for prd in request.params: - if prd=="type": - continue - elif prd=="godownflag": - if int(request.params[prd]) > 0: - godownflag=True - else: - godownflag=False - elif prd =="productcode": - proddetails["productcode"] = request.params[prd] - elif prd =="catselect": - if request.params[prd] !="": - proddetails["categorycode"] = request.params[prd] - elif prd == "editproddesc": - proddetails["productdesc"] = request.params[prd]; - elif prd == "uom": - proddetails["uomid"] = request.params[prd] - elif prd == "openingstock": - proddetails["openingstock"] = request.params[prd] - elif prd == "taxes": - taxes = json.loads(request.params["taxes"]) - elif prd == "godowns": - godowns = json.loads(request.params["godowns"]) - else: - proddetails["specs"]= json.loads(request.params["specs"]) - if request.params.has_key("gscode"): - proddetails["gscode"]=request.params["gscode"] - if request.params.has_key("gsflag"): - proddetails["gsflag"]=request.params["gsflag"] - else: - proddetails["gsflag"] = 7 - - - productdetails = {"productdetails":proddetails, "godetails":godowns, "godownflag":godownflag} - result = requests.put("http://127.0.0.1:6543/products", data=json.dumps(productdetails),headers=header) - if result.json()["gkstatus"] == 0: - for tax in taxes: - if len(tax)!=0: - if tax["taxrowid"]!="new": - taxdata["taxid"] = tax["taxrowid"] - taxresult = requests.delete("http://127.0.0.1:6543/tax",data=json.dumps(taxdata) ,headers=header) - for tax in taxes: - if len(tax)!=0: - taxdata= {"taxname":tax["taxname"],"taxrate":float(tax["taxrate"]),"productcode":proddetails["productcode"]} - if tax["state"]!='': - taxdata["state"]=tax["state"] - taxresult = requests.post("http://127.0.0.1:6543/tax",data=json.dumps(taxdata) ,headers=header) - return {"gkstatus": result.json()["gkstatus"]} + header={"gktoken":request.headers["gktoken"]} + proddetails={} + productdetails={} + taxes =0 + taxdata = {} + godownflag=False + godowns={} + goid=0 + goopeningstock=0.00 + for prd in request.params: + if prd=="type": + continue + elif prd=="godownflag": + if int(request.params[prd]) > 0: + godownflag=True + else: + godownflag=False + elif prd =="productcode": + proddetails["productcode"] = request.params[prd] + elif prd =="catselect": + if request.params[prd] !="": + proddetails["categorycode"] = request.params[prd] + elif prd == "editproddesc": + proddetails["productdesc"] = request.params[prd]; + elif prd == "uom": + proddetails["uomid"] = request.params[prd] + elif prd == "openingstock": + proddetails["openingstock"] = request.params[prd] + elif prd == "taxes": + taxes = json.loads(request.params["taxes"]) + elif prd == "godowns": + godowns = json.loads(request.params["godowns"]) + else: + proddetails["specs"]= json.loads(request.params["specs"]) + if request.params.has_key("gscode"): + proddetails["gscode"]=request.params["gscode"] + if request.params.has_key("gsflag"): + proddetails["gsflag"]=request.params["gsflag"] + else: + proddetails["gsflag"] = 7 + + + productdetails = {"productdetails":proddetails, "godetails":godowns, "godownflag":godownflag} + result = requests.put("http://127.0.0.1:6543/products", data=json.dumps(productdetails),headers=header) + if result.json()["gkstatus"] == 0: + for tax in taxes: + if len(tax)!=0: + if tax["taxrowid"]!="new": + taxdata["taxid"] = tax["taxrowid"] + taxresult = requests.delete("http://127.0.0.1:6543/tax",data=json.dumps(taxdata) ,headers=header) + for tax in taxes: + if len(tax)!=0: + taxdata= {"taxname":tax["taxname"],"taxrate":float(tax["taxrate"]),"productcode":proddetails["productcode"]} + if tax["state"]!='': + taxdata["state"]=tax["state"] + taxresult = requests.post("http://127.0.0.1:6543/tax",data=json.dumps(taxdata) ,headers=header) + return {"gkstatus": result.json()["gkstatus"]} @view_config(route_name="product",request_param="type=delete", renderer="json") def deleteproduct(request): - header={"gktoken":request.headers["gktoken"]} - resultprod = requests.get("http://127.0.0.1:6543/products?qty=single&productcode=%d"%(int(request.params['productcode'])),headers=header) - resultgoprod = requests.get("http://127.0.0.1:6543/products?by=godown&productcode=%d"%(int(request.params["productcode"])), headers=header) - goproddata = resultgoprod.json()["gkresult"] - result = requests.delete("http://127.0.0.1:6543/products", data=json.dumps({"productcode":request.params["productcode"]}),headers=header) - if result.json()["gkstatus"] == 0: - goddetdata = "" - if len(goproddata) > 0: - goddetdata = " from godown " - j = 1 - for goprod in goproddata: - result = requests.get("http://127.0.0.1:6543/godown?qty=single&goid=%d"%(int(goprod["goid"])), headers=header) - goddetdata = goddetdata + result.json()["gkresult"]["goname"] + "(" + result.json()["gkresult"]["goaddr"] + ")" - if j != len(goproddata): - goddetdata += ", " - j += 1 - gkdata = {"activity":resultprod.json()["gkresult"]["productdesc"] + " product deleted" + goddetdata + "."} - resultlog = requests.post("http://127.0.0.1:6543/log", data =json.dumps(gkdata),headers=header) - return{"gkstatus":result.json()["gkstatus"]} + header={"gktoken":request.headers["gktoken"]} + resultprod = requests.get("http://127.0.0.1:6543/products?qty=single&productcode=%d"%(int(request.params['productcode'])),headers=header) + resultgoprod = requests.get("http://127.0.0.1:6543/products?by=godown&productcode=%d"%(int(request.params["productcode"])), headers=header) + goproddata = resultgoprod.json()["gkresult"] + result = requests.delete("http://127.0.0.1:6543/products", data=json.dumps({"productcode":request.params["productcode"]}),headers=header) + if result.json()["gkstatus"] == 0: + goddetdata = "" + if len(goproddata) > 0: + goddetdata = " from godown " + j = 1 + for goprod in goproddata: + result = requests.get("http://127.0.0.1:6543/godown?qty=single&goid=%d"%(int(goprod["goid"])), headers=header) + goddetdata = goddetdata + result.json()["gkresult"]["goname"] + "(" + result.json()["gkresult"]["goaddr"] + ")" + if j != len(goproddata): + goddetdata += ", " + j += 1 + gkdata = {"activity":resultprod.json()["gkresult"]["productdesc"] + " product deleted" + goddetdata + "."} + resultlog = requests.post("http://127.0.0.1:6543/log", data =json.dumps(gkdata),headers=header) + return{"gkstatus":result.json()["gkstatus"]} @view_config(route_name="product",request_param="type=edittab", renderer="gkwebapp:templates/editproduct.jinja2") def editproducttab(request): - header={"gktoken":request.headers["gktoken"]} - result = requests.get("http://127.0.0.1:6543/products",headers=header) - resultgstvat = requests.get("http://127.0.0.1:6543/products?tax=vatorgst",headers=header) - return{"gkresult":result.json()["gkresult"],"gkstatus":result.json()["gkstatus"],"vatorgstflag":resultgstvat.json()["gkresult"]} + header={"gktoken":request.headers["gktoken"]} + result = requests.get("http://127.0.0.1:6543/products",headers=header) + resultgstvat = requests.get("http://127.0.0.1:6543/products?tax=vatorgst",headers=header) + return{"gkresult":result.json()["gkresult"],"gkstatus":result.json()["gkstatus"],"vatorgstflag":resultgstvat.json()["gkresult"]} @view_config(route_name="product",request_param="type=edittabvat", renderer="gkwebapp:templates/editproductvat.jinja2") def editProductTabVat(request): - header={"gktoken":request.headers["gktoken"]} - result = requests.get("http://127.0.0.1:6543/products",headers=header) - resultgstvat = requests.get("http://127.0.0.1:6543/products?tax=vatorgst",headers=header) - return{"gkresult":result.json()["gkresult"],"gkstatus":result.json()["gkstatus"],"vatorgstflag":resultgstvat.json()["gkresult"]} + header={"gktoken":request.headers["gktoken"]} + result = requests.get("http://127.0.0.1:6543/products",headers=header) + resultgstvat = requests.get("http://127.0.0.1:6543/products?tax=vatorgst",headers=header) + return{"gkresult":result.json()["gkresult"],"gkstatus":result.json()["gkstatus"],"vatorgstflag":resultgstvat.json()["gkresult"]} @view_config(route_name="product",request_param="type=details", renderer="gkwebapp:templates/editproductspecs.jinja2") def productdetails(request): - header={"gktoken":request.headers["gktoken"]} - prodspecs={} - result = requests.get("http://127.0.0.1:6543/products?qty=single&productcode=%d"%(int(request.params['productcode'])),headers=header) - resultgstvat = requests.get("http://127.0.0.1:6543/products?tax=vatorgst",headers=header) + header={"gktoken":request.headers["gktoken"]} + prodspecs={} + result = requests.get("http://127.0.0.1:6543/products?qty=single&productcode=%d"%(int(request.params['productcode'])),headers=header) + resultgstvat = requests.get("http://127.0.0.1:6543/products?tax=vatorgst",headers=header) + states = requests.get("http://127.0.0.1:6543/state", headers=header) - if result.json()["gkresult"]["gsflag"]==7: + if result.json()["gkresult"]["gsflag"]==7: - if result.json()["gkresult"]["categorycode"]!=None: - result1 = requests.get("http://127.0.0.1:6543/categoryspecs?categorycode=%d"%(int(result.json()["gkresult"]["categorycode"])), headers=header) - prodspecs = result1.json()["gkresult"] - result2 = requests.get("http://127.0.0.1:6543/unitofmeasurement?qty=all", headers=header) + if result.json()["gkresult"]["categorycode"]!=None: + result1 = requests.get("http://127.0.0.1:6543/categoryspecs?categorycode=%d"%(int(result.json()["gkresult"]["categorycode"])), headers=header) + prodspecs = result1.json()["gkresult"] + result2 = requests.get("http://127.0.0.1:6543/unitofmeasurement?qty=all", headers=header) - result3 = requests.get("http://127.0.0.1:6543/categories", headers=header) - result4 = requests.get("http://127.0.0.1:6543/godown", headers=header) - numberofgodowns = int(result.json()["numberofgodowns"]) - return{"proddesc":result.json()["gkresult"],"prodspecs":prodspecs,"uom":result2.json()["gkresult"],"category":result3.json()["gkresult"],"godown":result4.json()["gkresult"],"numberofgodowns":numberofgodowns,"gkstatus":result.json()["gkstatus"],"vatorgstflag":resultgstvat.json()["gkresult"]} - else: - return{"proddesc":result.json()["gkresult"],"vatorgstflag":resultgstvat.json()["gkresult"]} + result3 = requests.get("http://127.0.0.1:6543/categories", headers=header) + result4 = requests.get("http://127.0.0.1:6543/godown", headers=header) + numberofgodowns = int(result.json()["numberofgodowns"]) + return{"proddesc":result.json()["gkresult"],"prodspecs":prodspecs,"uom":result2.json()["gkresult"],"category":result3.json()["gkresult"],"godown":result4.json()["gkresult"],"numberofgodowns":numberofgodowns,"gkstatus":result.json()["gkstatus"],"vatorgstflag":resultgstvat.json()["gkresult"], "states": states.json()["gkresult"]} + else: + return{"proddesc":result.json()["gkresult"],"vatorgstflag":resultgstvat.json()["gkresult"], "states": states.json()["gkresult"]} @view_config(route_name="product",request_param="type=detailsvat", renderer="gkwebapp:templates/editproductspecsvat.jinja2") def productDetailsVat(request): - header={"gktoken":request.headers["gktoken"]} - prodspecs={} - result = requests.get("http://127.0.0.1:6543/products?qty=single&productcode=%d"%(int(request.params['productcode'])),headers=header) - resultgstvat = requests.get("http://127.0.0.1:6543/products?tax=vatorgst",headers=header) + header={"gktoken":request.headers["gktoken"]} + prodspecs={} + result = requests.get("http://127.0.0.1:6543/products?qty=single&productcode=%d"%(int(request.params['productcode'])),headers=header) + resultgstvat = requests.get("http://127.0.0.1:6543/products?tax=vatorgst",headers=header) + states = requests.get("http://127.0.0.1:6543/state", headers=header) - if result.json()["gkresult"]["gsflag"]==7: + if result.json()["gkresult"]["gsflag"]==7: - if result.json()["gkresult"]["categorycode"]!=None: - result1 = requests.get("http://127.0.0.1:6543/categoryspecs?categorycode=%d"%(int(result.json()["gkresult"]["categorycode"])), headers=header) - prodspecs = result1.json()["gkresult"] - result2 = requests.get("http://127.0.0.1:6543/unitofmeasurement?qty=all", headers=header) + if result.json()["gkresult"]["categorycode"]!=None: + result1 = requests.get("http://127.0.0.1:6543/categoryspecs?categorycode=%d"%(int(result.json()["gkresult"]["categorycode"])), headers=header) + prodspecs = result1.json()["gkresult"] + result2 = requests.get("http://127.0.0.1:6543/unitofmeasurement?qty=all", headers=header) - result3 = requests.get("http://127.0.0.1:6543/categories", headers=header) - result4 = requests.get("http://127.0.0.1:6543/godown", headers=header) - numberofgodowns = int(result.json()["numberofgodowns"]) - return{"proddesc":result.json()["gkresult"],"prodspecs":prodspecs,"uom":result2.json()["gkresult"],"category":result3.json()["gkresult"],"godown":result4.json()["gkresult"],"numberofgodowns":numberofgodowns,"gkstatus":result.json()["gkstatus"],"vatorgstflag":resultgstvat.json()["gkresult"]} - else: - return{"proddesc":result.json()["gkresult"],"vatorgstflag":resultgstvat.json()["gkresult"]} + result3 = requests.get("http://127.0.0.1:6543/categories", headers=header) + result4 = requests.get("http://127.0.0.1:6543/godown", headers=header) + numberofgodowns = int(result.json()["numberofgodowns"]) + return{"proddesc":result.json()["gkresult"],"prodspecs":prodspecs,"uom":result2.json()["gkresult"],"category":result3.json()["gkresult"],"godown":result4.json()["gkresult"],"numberofgodowns":numberofgodowns,"gkstatus":result.json()["gkstatus"],"vatorgstflag":resultgstvat.json()["gkresult"], "states": states.json()["gkresult"]} + else: + return{"proddesc":result.json()["gkresult"],"vatorgstflag":resultgstvat.json()["gkresult"], "states": states.json()["gkresult"]} @view_config(route_name="product",request_param="type=list", renderer="gkwebapp:templates/listofstockitems.jinja2") def listofstockitems(request): - header={"gktoken":request.headers["gktoken"]} - result = requests.get("http://127.0.0.1:6543/products",headers=header) - return{"gkresult":result.json()["gkresult"],"gkstatus":result.json()["gkstatus"]} + header={"gktoken":request.headers["gktoken"]} + result = requests.get("http://127.0.0.1:6543/products",headers=header) + return{"gkresult":result.json()["gkresult"],"gkstatus":result.json()["gkstatus"]} @view_config(route_name="product",request_param="type=printable", renderer="gkwebapp:templates/printlistofstockitems.jinja2") def printlistofstockitems(request): - header={"gktoken":request.headers["gktoken"]} - result = requests.get("http://127.0.0.1:6543/products",headers=header) + header={"gktoken":request.headers["gktoken"]} + result = requests.get("http://127.0.0.1:6543/products",headers=header) - return{"gkresult":result.json()["gkresult"],"gkstatus":result.json()["gkstatus"]} + return{"gkresult":result.json()["gkresult"],"gkstatus":result.json()["gkstatus"]} @view_config(route_name="product",request_param="type=spreadsheet", renderer="") def listofstockitemsspreadsheet(request): - header={"gktoken":request.headers["gktoken"]} - result = requests.get("http://127.0.0.1:6543/products", headers=header) - resultgstvat = requests.get("http://127.0.0.1:6543/products?tax=vatorgst",headers=header) - resultgstvat = resultgstvat.json()["gkresult"] - result = result.json()["gkresult"] - fystart = str(request.params["fystart"]); - fyend = str(request.params["fyend"]); - orgname = str(request.params["orgname"]) - orgname += " (FY: " + fystart+" to "+fyend +")" - ods = ODS() - sheet = ods.content.getSheet(0) - sheet.setSheetName("List of Products") - sheet.getRow(0).setHeight("23pt") - - sheet.getCell(0,0).stringValue(orgname).setBold(True).setAlignHorizontal("center").setFontSize("16pt") - ods.content.mergeCells(0,0,4,1) - sheet.getRow(1).setHeight("18pt") - sheet.getCell(0,1).stringValue("List Of Products").setBold(True).setFontSize("14pt").setAlignHorizontal("center") - ods.content.mergeCells(0,1,4,1) - sheet.getColumn(1).setWidth("9cm") - sheet.getColumn(2).setWidth("4cm") - sheet.getColumn(3).setWidth("4cm") - sheet.getCell(0,2).stringValue("Sr. No.").setBold(True) - if resultgstvat == "22": - sheet.getCell(1,2).stringValue("Product").setBold(True) - sheet.getCell(2,2).stringValue("Category").setBold(True) - sheet.getCell(3,2).stringValue("UOM").setBold(True) - else: - sheet.getCell(1,2).stringValue("Product / Service").setBold(True) - sheet.getCell(2,2).stringValue("Type").setBold(True) - sheet.getCell(3,2).stringValue("Category").setBold(True) - sheet.getCell(4,2).stringValue("UOM").setBold(True) - - if resultgstvat == "22": - row = 3 - for stock in result: - sheet.getCell(0, row).stringValue(stock["srno"]) - sheet.getCell(1, row).stringValue(stock["productdesc"]) - sheet.getCell(2, row).stringValue(stock["categoryname"]) - sheet.getCell(3, row).stringValue(stock["unitname"]) - row += 1 - else: - row = 4 - for stock in result: - sheet.getCell(0, row).stringValue(stock["srno"]) - sheet.getCell(1, row).stringValue(stock["productdesc"]) - if stock["gsflag"] == 7: - sheet.getCell(2, row).stringValue("Product") - else: - sheet.getCell(2, row).stringValue("Service") - sheet.getCell(3, row).stringValue(stock["categoryname"]) - sheet.getCell(4, row).stringValue(stock["unitname"]) - row += 1 - - ods.save("response.ods") - repFile = open("response.ods") - rep = repFile.read() - repFile.close() - headerList = {'Content-Type':'application/vnd.oasis.opendocument.spreadsheet ods' ,'Content-Length': len(rep),'Content-Disposition': 'attachment; filename=report.ods', 'Set-Cookie':'fileDownload=true; path=/'} - os.remove("response.ods") - return Response(rep, headerlist=headerList.items()) + header={"gktoken":request.headers["gktoken"]} + result = requests.get("http://127.0.0.1:6543/products", headers=header) + resultgstvat = requests.get("http://127.0.0.1:6543/products?tax=vatorgst",headers=header) + resultgstvat = resultgstvat.json()["gkresult"] + result = result.json()["gkresult"] + fystart = str(request.params["fystart"]); + fyend = str(request.params["fyend"]); + orgname = str(request.params["orgname"]) + orgname += " (FY: " + fystart+" to "+fyend +")" + ods = ODS() + sheet = ods.content.getSheet(0) + sheet.setSheetName("List of Products") + sheet.getRow(0).setHeight("23pt") + + sheet.getCell(0,0).stringValue(orgname).setBold(True).setAlignHorizontal("center").setFontSize("16pt") + ods.content.mergeCells(0,0,4,1) + sheet.getRow(1).setHeight("18pt") + sheet.getCell(0,1).stringValue("List Of Products").setBold(True).setFontSize("14pt").setAlignHorizontal("center") + ods.content.mergeCells(0,1,4,1) + sheet.getColumn(1).setWidth("9cm") + sheet.getColumn(2).setWidth("4cm") + sheet.getColumn(3).setWidth("4cm") + sheet.getCell(0,2).stringValue("Sr. No.").setBold(True) + if resultgstvat == "22": + sheet.getCell(1,2).stringValue("Product").setBold(True) + sheet.getCell(2,2).stringValue("Category").setBold(True) + sheet.getCell(3,2).stringValue("UOM").setBold(True) + else: + sheet.getCell(1,2).stringValue("Product / Service").setBold(True) + sheet.getCell(2,2).stringValue("Type").setBold(True) + sheet.getCell(3,2).stringValue("Category").setBold(True) + sheet.getCell(4,2).stringValue("UOM").setBold(True) + + if resultgstvat == "22": + row = 3 + for stock in result: + sheet.getCell(0, row).stringValue(stock["srno"]) + sheet.getCell(1, row).stringValue(stock["productdesc"]) + sheet.getCell(2, row).stringValue(stock["categoryname"]) + sheet.getCell(3, row).stringValue(stock["unitname"]) + row += 1 + else: + row = 4 + for stock in result: + sheet.getCell(0, row).stringValue(stock["srno"]) + sheet.getCell(1, row).stringValue(stock["productdesc"]) + if stock["gsflag"] == 7: + sheet.getCell(2, row).stringValue("Product") + else: + sheet.getCell(2, row).stringValue("Service") + sheet.getCell(3, row).stringValue(stock["categoryname"]) + sheet.getCell(4, row).stringValue(stock["unitname"]) + row += 1 + + ods.save("response.ods") + repFile = open("response.ods") + rep = repFile.read() + repFile.close() + headerList = {'Content-Type':'application/vnd.oasis.opendocument.spreadsheet ods' ,'Content-Length': len(rep),'Content-Disposition': 'attachment; filename=report.ods', 'Set-Cookie':'fileDownload=true; path=/'} + os.remove("response.ods") + return Response(rep, headerlist=headerList.items()) @view_config(route_name="product",request_param="type=viewstockreport", renderer="gkwebapp:templates/viewstockreport.jinja2") def viewstockreport(request): - header={"gktoken":request.headers["gktoken"]} - result = requests.get("http://127.0.0.1:6543/products?invdc=4",headers=header) - result1 = requests.get("http://127.0.0.1:6543/godown",headers=header) - result2 = requests.get("http://127.0.0.1:6543/login", headers=header) - userrole = result2.json()["gkresult"]["userrole"] - return{"gkresult":result.json()["gkresult"], "godown":result1.json()["gkresult"], "gkstatus":result.json()["gkstatus"], "userrole":userrole} + header={"gktoken":request.headers["gktoken"]} + result = requests.get("http://127.0.0.1:6543/products?invdc=4",headers=header) + result1 = requests.get("http://127.0.0.1:6543/godown",headers=header) + result2 = requests.get("http://127.0.0.1:6543/login", headers=header) + userrole = result2.json()["gkresult"]["userrole"] + return{"gkresult":result.json()["gkresult"], "godown":result1.json()["gkresult"], "gkstatus":result.json()["gkstatus"], "userrole":userrole} @view_config(route_name="product",request_param="type=showstockreport") def showstockreport(request): - header={"gktoken":request.headers["gktoken"]} - godownflag = int(request.params["godownflag"]) - goid = int(request.params["goid"]) - goname = request.params["goname"] - if godownflag==1: - goaddr = request.params["goaddr"] - productcode = int(request.params["productcode"]) - calculatefrom = request.params["calculatefrom"] - calculateto = request.params["calculateto"] - scalculatefrom = request.params["calculatefrom"] - scalculateto = request.params["calculateto"] - productdesc = request.params["productdesc"] - if int(request.params["backflag"]) > 0: - scalculatefrom = datetime.strptime(calculatefrom, '%d-%m-%Y').strftime('%Y-%m-%d') - scalculateto = datetime.strptime(calculateto, '%d-%m-%Y').strftime('%Y-%m-%d') - stockrefresh = {"productcode":productcode,"calculatefrom":calculatefrom,"calculateto":calculateto,"productdesc":productdesc,"godownflag":godownflag,"goid":goid } - else: - stockrefresh = {"productcode":productcode,"calculatefrom":datetime.strptime(calculatefrom, '%Y-%m-%d').strftime('%d-%m-%Y'),"calculateto":datetime.strptime(calculateto, '%Y-%m-%d').strftime('%d-%m-%Y'),"productdesc":productdesc,"godownflag":godownflag,"goid":goid} - if godownflag>0: - result = requests.get("http://127.0.0.1:6543/report?type=godownstockreport&goid=%d&productcode=%d&startdate=%s&enddate=%s"%(goid, productcode, scalculatefrom, scalculateto),headers=header) - else: - result = requests.get("http://127.0.0.1:6543/report?type=stockreport&productcode=%d&startdate=%s&enddate=%s"%(productcode, scalculatefrom, scalculateto),headers=header) - if godownflag==1: - return render_to_response("gkwebapp:templates/showstockreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh,"godown":goname, "godownadd":goaddr},request=request) - return render_to_response("gkwebapp:templates/showstockreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh,"godown":goname},request=request) + header={"gktoken":request.headers["gktoken"]} + godownflag = int(request.params["godownflag"]) + goid = int(request.params["goid"]) + goname = request.params["goname"] + if godownflag==1: + goaddr = request.params["goaddr"] + productcode = int(request.params["productcode"]) + calculatefrom = request.params["calculatefrom"] + calculateto = request.params["calculateto"] + scalculatefrom = request.params["calculatefrom"] + scalculateto = request.params["calculateto"] + productdesc = request.params["productdesc"] + if int(request.params["backflag"]) > 0: + scalculatefrom = datetime.strptime(calculatefrom, '%d-%m-%Y').strftime('%Y-%m-%d') + scalculateto = datetime.strptime(calculateto, '%d-%m-%Y').strftime('%Y-%m-%d') + stockrefresh = {"productcode":productcode,"calculatefrom":calculatefrom,"calculateto":calculateto,"productdesc":productdesc,"godownflag":godownflag,"goid":goid } + else: + stockrefresh = {"productcode":productcode,"calculatefrom":datetime.strptime(calculatefrom, '%Y-%m-%d').strftime('%d-%m-%Y'),"calculateto":datetime.strptime(calculateto, '%Y-%m-%d').strftime('%d-%m-%Y'),"productdesc":productdesc,"godownflag":godownflag,"goid":goid} + if godownflag>0: + result = requests.get("http://127.0.0.1:6543/report?type=godownstockreport&goid=%d&productcode=%d&startdate=%s&enddate=%s"%(goid, productcode, scalculatefrom, scalculateto),headers=header) + else: + result = requests.get("http://127.0.0.1:6543/report?type=stockreport&productcode=%d&startdate=%s&enddate=%s"%(productcode, scalculatefrom, scalculateto),headers=header) + if godownflag==1: + return render_to_response("gkwebapp:templates/showstockreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh,"godown":goname, "godownadd":goaddr},request=request) + return render_to_response("gkwebapp:templates/showstockreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh,"godown":goname},request=request) @view_config(route_name="product",request_param="type=printablestockreport") def printablestockreport(request): - header={"gktoken":request.headers["gktoken"]} - godownflag = int(request.params["godownflag"]) - goid = int(request.params["goid"]) - goname = request.params["goname"] - if godownflag==1: - goaddr = request.params["goaddr"] - productcode = int(request.params["productcode"]) - scalculatefrom = request.params["calculatefrom"] - scalculateto = request.params["calculateto"] - calculatefrom = datetime.strptime(scalculatefrom, '%d-%m-%Y').strftime('%Y-%m-%d') - calculateto = datetime.strptime(scalculateto, '%d-%m-%Y').strftime('%Y-%m-%d') - productdesc = request.params["productdesc"] - stockrefresh = {"productcode":productcode,"calculatefrom":scalculatefrom,"calculateto":scalculateto,"productdesc":productdesc,"godownflag":godownflag,"goid":goid} - if godownflag > 0: - result = requests.get("http://127.0.0.1:6543/report?type=godownstockreport&productcode=%d&startdate=%s&enddate=%s&goid=%d&godownflag=%d"%(productcode, calculatefrom, calculateto, goid, godownflag),headers=header) - else: - result = requests.get("http://127.0.0.1:6543/report?type=stockreport&productcode=%d&startdate=%s&enddate=%s"%(productcode, calculatefrom, calculateto),headers=header) - if godownflag==1: - return render_to_response("gkwebapp:templates/printstockreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh,"godown":goname, "godownadd":goaddr},request=request) - return render_to_response("gkwebapp:templates/printstockreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh,"godown":goname},request=request) + header={"gktoken":request.headers["gktoken"]} + godownflag = int(request.params["godownflag"]) + goid = int(request.params["goid"]) + goname = request.params["goname"] + if godownflag==1: + goaddr = request.params["goaddr"] + productcode = int(request.params["productcode"]) + scalculatefrom = request.params["calculatefrom"] + scalculateto = request.params["calculateto"] + calculatefrom = datetime.strptime(scalculatefrom, '%d-%m-%Y').strftime('%Y-%m-%d') + calculateto = datetime.strptime(scalculateto, '%d-%m-%Y').strftime('%Y-%m-%d') + productdesc = request.params["productdesc"] + stockrefresh = {"productcode":productcode,"calculatefrom":scalculatefrom,"calculateto":scalculateto,"productdesc":productdesc,"godownflag":godownflag,"goid":goid} + if godownflag > 0: + result = requests.get("http://127.0.0.1:6543/report?type=godownstockreport&productcode=%d&startdate=%s&enddate=%s&goid=%d&godownflag=%d"%(productcode, calculatefrom, calculateto, goid, godownflag),headers=header) + else: + result = requests.get("http://127.0.0.1:6543/report?type=stockreport&productcode=%d&startdate=%s&enddate=%s"%(productcode, calculatefrom, calculateto),headers=header) + if godownflag==1: + return render_to_response("gkwebapp:templates/printstockreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh,"godown":goname, "godownadd":goaddr},request=request) + return render_to_response("gkwebapp:templates/printstockreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh,"godown":goname},request=request) @view_config(route_name="product",request_param="type=stockreportspreadsheet", renderer="") def stockreportspreadsheet(request): - header={"gktoken":request.headers["gktoken"]} - godownflag = int(request.params["godownflag"]) - goid = int(request.params["goid"]) - goname = request.params["goname"] - if godownflag==1: - goaddr = request.params["goaddr"] - productcode = int(request.params["productcode"]) - calculatefrom = request.params["calculatefrom"] - calculateto = request.params["calculateto"] - scalculatefrom = datetime.strptime(calculatefrom, '%d-%m-%Y').strftime('%Y-%m-%d') - scalculateto = datetime.strptime(calculateto, '%d-%m-%Y').strftime('%Y-%m-%d') - productdesc = request.params["productdesc"] - if godownflag > 0: - result = requests.get("http://127.0.0.1:6543/report?type=godownstockreport&productcode=%d&startdate=%s&enddate=%s&goid=%d&godownflag=%d"%(productcode, scalculatefrom, scalculateto, goid, godownflag),headers=header) - else: - result = requests.get("http://127.0.0.1:6543/report?type=stockreport&productcode=%d&startdate=%s&enddate=%s"%(productcode, scalculatefrom, scalculateto),headers=header) - result = result.json()["gkresult"] - fystart = str(request.params["fystart"]); - ystart = datetime.strptime(fystart, '%Y-%m-%d').strftime('%d-%m-%Y') - fyend = str(request.params["fyend"]); - orgname = str(request.params["orgname"]) - orgname += " (FY: " + ystart+" to "+fyend +")" - ods = ODS() - sheet = ods.content.getSheet(0) - sheet.setSheetName("Product Report") - sheet.getRow(0).setHeight("23pt") - - if godownflag > 0: - sheet.getCell(0,0).stringValue(orgname).setBold(True).setAlignHorizontal("center").setFontSize("16pt") - ods.content.mergeCells(0,0,9,1) - sheet.getRow(1).setHeight("18pt") - sheet.getCell(0,1).stringValue("Godown Wise Product Report (Period : "+calculatefrom+" to "+calculateto+")").setBold(True).setFontSize("12pt").setAlignHorizontal("center") - ods.content.mergeCells(0,1,9,1) - sheet.getRow(2).setHeight("16pt") - sheet.getCell(0,2).stringValue("Name of the Product: "+productdesc).setBold(True).setFontSize("12pt").setAlignHorizontal("center") - ods.content.mergeCells(0,2,9,1) - sheet.getRow(3).setHeight("16pt") - sheet.getCell(0,3).stringValue("Name of the Godown : "+goname+", Godown Address: "+goaddr).setBold(True).setFontSize("12pt").setAlignHorizontal("center") - ods.content.mergeCells(0,3,9,1) - sheet.getColumn(1).setWidth("8cm") - sheet.getColumn(2).setWidth("4cm") - sheet.getColumn(3).setWidth("4cm") - sheet.getColumn(4).setWidth("2cm") - sheet.getCell(0,4).stringValue("Date").setBold(True).setAlignHorizontal("center") - sheet.getCell(1,4).stringValue("Particulars").setBold(True).setAlignHorizontal("center") - sheet.getCell(2,4).stringValue("Document Type").setBold(True).setAlignHorizontal("center") - sheet.getCell(3,4).stringValue("Deli Note No.").setBold(True).setAlignHorizontal("center") - sheet.getCell(4,4).stringValue("INV No.").setBold(True).setAlignHorizontal("center") - sheet.getCell(5,4).stringValue("TN No.").setBold(True).setAlignHorizontal("center") - sheet.getCell(6,4).stringValue("RN No.").setBold(True).setAlignHorizontal("center") - sheet.getCell(7,4).stringValue("Inward").setBold(True).setAlignHorizontal("right") - sheet.getCell(8,4).stringValue("Outward").setBold(True).setAlignHorizontal("right") - sheet.getCell(9,4).stringValue("Balance").setBold(True).setAlignHorizontal("right") - row = 5 - for stock in result: - if stock["particulars"]=="opening stock" and stock["dcno"]=="" and stock["invno"]=="" and stock["date"]=="": - sheet.getCell(0, row).stringValue("") - sheet.getCell(1, row).stringValue(stock["particulars"].title()) - sheet.getCell(2, row).stringValue("") - sheet.getCell(3, row).stringValue("") - sheet.getCell(4, row).stringValue("") - sheet.getCell(5, row).stringValue("") - sheet.getCell(6, row).stringValue("") - sheet.getCell(7, row).stringValue(stock["inward"]).setAlignHorizontal("right") - sheet.getCell(8, row).stringValue("") - sheet.getCell(9, row).stringValue("") - if stock["particulars"]!="Total" and (stock["dcno"]!="" or stock["invno"]!="" or stock["tnno"]!="" or stock["rnno"] != "") and stock["date"]!="": - sheet.getCell(0, row).stringValue(stock["date"]) - sheet.getCell(1, row).stringValue(stock["particulars"]) - sheet.getCell(2, row).stringValue(stock["trntype"]) - sheet.getCell(3, row).stringValue(stock["dcno"]) - sheet.getCell(4, row).stringValue(stock["invno"]) - sheet.getCell(5, row).stringValue(stock["tnno"]) - sheet.getCell(6, row).stringValue(stock["rnno"]) - sheet.getCell(7, row).stringValue(stock["inwardqty"]).setAlignHorizontal("right") - sheet.getCell(8, row).stringValue(stock["outwardqty"]).setAlignHorizontal("right") - sheet.getCell(9, row).stringValue(stock["balance"]).setAlignHorizontal("right") - if stock["particulars"]=="Total" and stock["dcno"]=="" and stock["invno"]=="" and stock["date"]=="": - sheet.getCell(0, row).stringValue("") - sheet.getCell(1, row).stringValue(stock["particulars"]) - sheet.getCell(2, row).stringValue("") - sheet.getCell(3, row).stringValue("") - sheet.getCell(4, row).stringValue("") - sheet.getCell(5, row).stringValue("") - sheet.getCell(6, row).stringValue("") - sheet.getCell(7, row).stringValue(stock["totalinwardqty"]).setAlignHorizontal("right") - sheet.getCell(8, row).stringValue(stock["totaloutwardqty"]).setAlignHorizontal("right") - sheet.getCell(9, row).stringValue("") - row += 1 - else: - sheet.getCell(0,0).stringValue(orgname).setBold(True).setAlignHorizontal("center").setFontSize("16pt") - ods.content.mergeCells(0,0,8,1) - sheet.getRow(1).setHeight("18pt") - sheet.getCell(0,1).stringValue("Product Report (Period : "+calculatefrom+" to "+calculateto+")").setBold(True).setFontSize("14pt").setAlignHorizontal("center") - ods.content.mergeCells(0,1,8,1) - sheet.getRow(2).setHeight("16pt") - sheet.getCell(0,2).stringValue("Name of the Product: "+productdesc).setBold(True).setFontSize("14pt").setAlignHorizontal("center") - ods.content.mergeCells(0,2,8,1) - sheet.getColumn(1).setWidth("4cm") - sheet.getColumn(2).setWidth("5cm") - sheet.getColumn(3).setWidth("4cm") - sheet.getColumn(4).setWidth("3cm") - sheet.getCell(0,3).stringValue("Date").setBold(True).setAlignHorizontal("center") - sheet.getCell(1,3).stringValue("Particulars").setBold(True).setAlignHorizontal("center") - sheet.getCell(2,3).stringValue("Document Type").setBold(True).setAlignHorizontal("center") - sheet.getCell(3,3).stringValue("Deli Note No.").setBold(True).setAlignHorizontal("center") - sheet.getCell(4,3).stringValue("INV No.").setBold(True).setAlignHorizontal("center") - sheet.getCell(5,3).stringValue("RN No.").setBold(True).setAlignHorizontal("center") - sheet.getCell(6,3).stringValue("Inward").setBold(True).setAlignHorizontal("right") - sheet.getCell(7,3).stringValue("Outward").setBold(True).setAlignHorizontal("right") - sheet.getCell(8,3).stringValue("Balance").setBold(True).setAlignHorizontal("right") - row = 4 - for stock in result: - if stock["particulars"]=="opening stock" and stock["dcno"]=="" and stock["invno"]=="" and stock["date"]=="": - sheet.getCell(0, row).stringValue("") - sheet.getCell(1, row).stringValue(stock["particulars"].title()) - sheet.getCell(2, row).stringValue("") - sheet.getCell(3, row).stringValue("") - sheet.getCell(4, row).stringValue("") - sheet.getCell(5, row).stringValue("") - sheet.getCell(6, row).stringValue(stock["inward"]).setAlignHorizontal("right") - sheet.getCell(7, row).stringValue("") - sheet.getCell(8, row).stringValue("") - if stock["particulars"]!="Total" and (stock["dcno"]!="" or stock["invno"]!="" or stock["rnid"] != "") and stock["date"]!="": - sheet.getCell(0, row).stringValue(stock["date"]) - sheet.getCell(1, row).stringValue(stock["particulars"]) - sheet.getCell(2, row).stringValue(stock["trntype"]) - sheet.getCell(3, row).stringValue(stock["dcno"]) - sheet.getCell(4, row).stringValue(stock["invno"]) - sheet.getCell(5, row).stringValue(stock["rnno"]) - sheet.getCell(6, row).stringValue(stock["inwardqty"]).setAlignHorizontal("right") - sheet.getCell(7, row).stringValue(stock["outwardqty"]).setAlignHorizontal("right") - sheet.getCell(8, row).stringValue(stock["balance"]).setAlignHorizontal("right") - if stock["particulars"]=="Total" and stock["dcno"]=="" and stock["invno"]=="" and stock["date"]=="": - sheet.getCell(0, row).stringValue("") - sheet.getCell(1, row).stringValue(stock["particulars"]) - sheet.getCell(2, row).stringValue("") - sheet.getCell(3, row).stringValue("") - sheet.getCell(4, row).stringValue("") - sheet.getCell(5, row).stringValue("") - sheet.getCell(6, row).stringValue(stock["totalinwardqty"]).setAlignHorizontal("right") - sheet.getCell(7, row).stringValue(stock["totaloutwardqty"]).setAlignHorizontal("right") - sheet.getCell(8, row).stringValue("") - row += 1 - - ods.save("response.ods") - repFile = open("response.ods") - rep = repFile.read() - repFile.close() - headerList = {'Content-Type':'application/vnd.oasis.opendocument.spreadsheet ods' ,'Content-Length': len(rep),'Content-Disposition': 'attachment; filename=report.ods', 'Set-Cookie':'fileDownload=true; path=/'} - os.remove("response.ods") - return Response(rep, headerlist=headerList.items()) + header={"gktoken":request.headers["gktoken"]} + godownflag = int(request.params["godownflag"]) + goid = int(request.params["goid"]) + goname = request.params["goname"] + if godownflag==1: + goaddr = request.params["goaddr"] + productcode = int(request.params["productcode"]) + calculatefrom = request.params["calculatefrom"] + calculateto = request.params["calculateto"] + scalculatefrom = datetime.strptime(calculatefrom, '%d-%m-%Y').strftime('%Y-%m-%d') + scalculateto = datetime.strptime(calculateto, '%d-%m-%Y').strftime('%Y-%m-%d') + productdesc = request.params["productdesc"] + if godownflag > 0: + result = requests.get("http://127.0.0.1:6543/report?type=godownstockreport&productcode=%d&startdate=%s&enddate=%s&goid=%d&godownflag=%d"%(productcode, scalculatefrom, scalculateto, goid, godownflag),headers=header) + else: + result = requests.get("http://127.0.0.1:6543/report?type=stockreport&productcode=%d&startdate=%s&enddate=%s"%(productcode, scalculatefrom, scalculateto),headers=header) + result = result.json()["gkresult"] + fystart = str(request.params["fystart"]); + ystart = datetime.strptime(fystart, '%Y-%m-%d').strftime('%d-%m-%Y') + fyend = str(request.params["fyend"]); + orgname = str(request.params["orgname"]) + orgname += " (FY: " + ystart+" to "+fyend +")" + ods = ODS() + sheet = ods.content.getSheet(0) + sheet.setSheetName("Product Report") + sheet.getRow(0).setHeight("23pt") + + if godownflag > 0: + sheet.getCell(0,0).stringValue(orgname).setBold(True).setAlignHorizontal("center").setFontSize("16pt") + ods.content.mergeCells(0,0,9,1) + sheet.getRow(1).setHeight("18pt") + sheet.getCell(0,1).stringValue("Godown Wise Product Report (Period : "+calculatefrom+" to "+calculateto+")").setBold(True).setFontSize("12pt").setAlignHorizontal("center") + ods.content.mergeCells(0,1,9,1) + sheet.getRow(2).setHeight("16pt") + sheet.getCell(0,2).stringValue("Name of the Product: "+productdesc).setBold(True).setFontSize("12pt").setAlignHorizontal("center") + ods.content.mergeCells(0,2,9,1) + sheet.getRow(3).setHeight("16pt") + sheet.getCell(0,3).stringValue("Name of the Godown : "+goname+", Godown Address: "+goaddr).setBold(True).setFontSize("12pt").setAlignHorizontal("center") + ods.content.mergeCells(0,3,9,1) + sheet.getColumn(1).setWidth("8cm") + sheet.getColumn(2).setWidth("4cm") + sheet.getColumn(3).setWidth("4cm") + sheet.getColumn(4).setWidth("2cm") + sheet.getCell(0,4).stringValue("Date").setBold(True).setAlignHorizontal("center") + sheet.getCell(1,4).stringValue("Particulars").setBold(True).setAlignHorizontal("center") + sheet.getCell(2,4).stringValue("Document Type").setBold(True).setAlignHorizontal("center") + sheet.getCell(3,4).stringValue("Deli Note No.").setBold(True).setAlignHorizontal("center") + sheet.getCell(4,4).stringValue("INV No.").setBold(True).setAlignHorizontal("center") + sheet.getCell(5,4).stringValue("TN No.").setBold(True).setAlignHorizontal("center") + sheet.getCell(6,4).stringValue("RN No.").setBold(True).setAlignHorizontal("center") + sheet.getCell(7,4).stringValue("Inward").setBold(True).setAlignHorizontal("right") + sheet.getCell(8,4).stringValue("Outward").setBold(True).setAlignHorizontal("right") + sheet.getCell(9,4).stringValue("Balance").setBold(True).setAlignHorizontal("right") + row = 5 + for stock in result: + if stock["particulars"]=="opening stock" and stock["dcno"]=="" and stock["invno"]=="" and stock["date"]=="": + sheet.getCell(0, row).stringValue("") + sheet.getCell(1, row).stringValue(stock["particulars"].title()) + sheet.getCell(2, row).stringValue("") + sheet.getCell(3, row).stringValue("") + sheet.getCell(4, row).stringValue("") + sheet.getCell(5, row).stringValue("") + sheet.getCell(6, row).stringValue("") + sheet.getCell(7, row).stringValue(stock["inward"]).setAlignHorizontal("right") + sheet.getCell(8, row).stringValue("") + sheet.getCell(9, row).stringValue("") + if stock["particulars"]!="Total" and (stock["dcno"]!="" or stock["invno"]!="" or stock["tnno"]!="" or stock["rnno"] != "") and stock["date"]!="": + sheet.getCell(0, row).stringValue(stock["date"]) + sheet.getCell(1, row).stringValue(stock["particulars"]) + sheet.getCell(2, row).stringValue(stock["trntype"]) + sheet.getCell(3, row).stringValue(stock["dcno"]) + sheet.getCell(4, row).stringValue(stock["invno"]) + sheet.getCell(5, row).stringValue(stock["tnno"]) + sheet.getCell(6, row).stringValue(stock["rnno"]) + sheet.getCell(7, row).stringValue(stock["inwardqty"]).setAlignHorizontal("right") + sheet.getCell(8, row).stringValue(stock["outwardqty"]).setAlignHorizontal("right") + sheet.getCell(9, row).stringValue(stock["balance"]).setAlignHorizontal("right") + if stock["particulars"]=="Total" and stock["dcno"]=="" and stock["invno"]=="" and stock["date"]=="": + sheet.getCell(0, row).stringValue("") + sheet.getCell(1, row).stringValue(stock["particulars"]) + sheet.getCell(2, row).stringValue("") + sheet.getCell(3, row).stringValue("") + sheet.getCell(4, row).stringValue("") + sheet.getCell(5, row).stringValue("") + sheet.getCell(6, row).stringValue("") + sheet.getCell(7, row).stringValue(stock["totalinwardqty"]).setAlignHorizontal("right") + sheet.getCell(8, row).stringValue(stock["totaloutwardqty"]).setAlignHorizontal("right") + sheet.getCell(9, row).stringValue("") + row += 1 + else: + sheet.getCell(0,0).stringValue(orgname).setBold(True).setAlignHorizontal("center").setFontSize("16pt") + ods.content.mergeCells(0,0,8,1) + sheet.getRow(1).setHeight("18pt") + sheet.getCell(0,1).stringValue("Product Report (Period : "+calculatefrom+" to "+calculateto+")").setBold(True).setFontSize("14pt").setAlignHorizontal("center") + ods.content.mergeCells(0,1,8,1) + sheet.getRow(2).setHeight("16pt") + sheet.getCell(0,2).stringValue("Name of the Product: "+productdesc).setBold(True).setFontSize("14pt").setAlignHorizontal("center") + ods.content.mergeCells(0,2,8,1) + sheet.getColumn(1).setWidth("4cm") + sheet.getColumn(2).setWidth("5cm") + sheet.getColumn(3).setWidth("4cm") + sheet.getColumn(4).setWidth("3cm") + sheet.getCell(0,3).stringValue("Date").setBold(True).setAlignHorizontal("center") + sheet.getCell(1,3).stringValue("Particulars").setBold(True).setAlignHorizontal("center") + sheet.getCell(2,3).stringValue("Document Type").setBold(True).setAlignHorizontal("center") + sheet.getCell(3,3).stringValue("Deli Note No.").setBold(True).setAlignHorizontal("center") + sheet.getCell(4,3).stringValue("INV No.").setBold(True).setAlignHorizontal("center") + sheet.getCell(5,3).stringValue("RN No.").setBold(True).setAlignHorizontal("center") + sheet.getCell(6,3).stringValue("Inward").setBold(True).setAlignHorizontal("right") + sheet.getCell(7,3).stringValue("Outward").setBold(True).setAlignHorizontal("right") + sheet.getCell(8,3).stringValue("Balance").setBold(True).setAlignHorizontal("right") + row = 4 + for stock in result: + if stock["particulars"]=="opening stock" and stock["dcno"]=="" and stock["invno"]=="" and stock["date"]=="": + sheet.getCell(0, row).stringValue("") + sheet.getCell(1, row).stringValue(stock["particulars"].title()) + sheet.getCell(2, row).stringValue("") + sheet.getCell(3, row).stringValue("") + sheet.getCell(4, row).stringValue("") + sheet.getCell(5, row).stringValue("") + sheet.getCell(6, row).stringValue(stock["inward"]).setAlignHorizontal("right") + sheet.getCell(7, row).stringValue("") + sheet.getCell(8, row).stringValue("") + if stock["particulars"]!="Total" and (stock["dcno"]!="" or stock["invno"]!="" or stock["rnid"] != "") and stock["date"]!="": + sheet.getCell(0, row).stringValue(stock["date"]) + sheet.getCell(1, row).stringValue(stock["particulars"]) + sheet.getCell(2, row).stringValue(stock["trntype"]) + sheet.getCell(3, row).stringValue(stock["dcno"]) + sheet.getCell(4, row).stringValue(stock["invno"]) + sheet.getCell(5, row).stringValue(stock["rnno"]) + sheet.getCell(6, row).stringValue(stock["inwardqty"]).setAlignHorizontal("right") + sheet.getCell(7, row).stringValue(stock["outwardqty"]).setAlignHorizontal("right") + sheet.getCell(8, row).stringValue(stock["balance"]).setAlignHorizontal("right") + if stock["particulars"]=="Total" and stock["dcno"]=="" and stock["invno"]=="" and stock["date"]=="": + sheet.getCell(0, row).stringValue("") + sheet.getCell(1, row).stringValue(stock["particulars"]) + sheet.getCell(2, row).stringValue("") + sheet.getCell(3, row).stringValue("") + sheet.getCell(4, row).stringValue("") + sheet.getCell(5, row).stringValue("") + sheet.getCell(6, row).stringValue(stock["totalinwardqty"]).setAlignHorizontal("right") + sheet.getCell(7, row).stringValue(stock["totaloutwardqty"]).setAlignHorizontal("right") + sheet.getCell(8, row).stringValue("") + row += 1 + + ods.save("response.ods") + repFile = open("response.ods") + rep = repFile.read() + repFile.close() + headerList = {'Content-Type':'application/vnd.oasis.opendocument.spreadsheet ods' ,'Content-Length': len(rep),'Content-Disposition': 'attachment; filename=report.ods', 'Set-Cookie':'fileDownload=true; path=/'} + os.remove("response.ods") + return Response(rep, headerlist=headerList.items()) @view_config(route_name="product",request_param="type=viewstockonhandreport", renderer="gkwebapp:templates/viewstockonhandreport.jinja2") def viewStockOnHandReport(request): - header={"gktoken":request.headers["gktoken"]} - result = requests.get("http://127.0.0.1:6543/products?invdc=4",headers=header) - result1 = requests.get("http://127.0.0.1:6543/godown",headers=header) - result2 = requests.get("http://127.0.0.1:6543/login", headers=header) - userrole = result2.json()["gkresult"]["userrole"] - return{"gkresult":result.json()["gkresult"], "godown":result1.json()["gkresult"], "gkstatus":result.json()["gkstatus"], "userrole":userrole} + header={"gktoken":request.headers["gktoken"]} + result = requests.get("http://127.0.0.1:6543/products?invdc=4",headers=header) + result1 = requests.get("http://127.0.0.1:6543/godown",headers=header) + result2 = requests.get("http://127.0.0.1:6543/login", headers=header) + userrole = result2.json()["gkresult"]["userrole"] + return{"gkresult":result.json()["gkresult"], "godown":result1.json()["gkresult"], "gkstatus":result.json()["gkstatus"], "userrole":userrole} @view_config(route_name="product",request_param="type=viewcategorywisestockonhandreport", renderer="gkwebapp:templates/viewcategorywisestockonhandreport.jinja2") def viewCategorywiseStockOnHandReport(request): - header={"gktoken":request.headers["gktoken"]} - result = requests.get("http://127.0.0.1:6543/categories",headers=header) - result1 = requests.get("http://127.0.0.1:6543/godown",headers=header) - result2 = requests.get("http://127.0.0.1:6543/login", headers=header) - userrole = result2.json()["gkresult"]["userrole"] - return{"gkresult":result.json()["gkresult"], "godown":result1.json()["gkresult"], "gkstatus":result.json()["gkstatus"], "userrole":userrole} + header={"gktoken":request.headers["gktoken"]} + result = requests.get("http://127.0.0.1:6543/categories",headers=header) + result1 = requests.get("http://127.0.0.1:6543/godown",headers=header) + result2 = requests.get("http://127.0.0.1:6543/login", headers=header) + userrole = result2.json()["gkresult"]["userrole"] + return{"gkresult":result.json()["gkresult"], "godown":result1.json()["gkresult"], "gkstatus":result.json()["gkstatus"], "userrole":userrole} @view_config(route_name="product",request_param="type=showstockonhandreport") def showstockonhandreport(request): - header={"gktoken":request.headers["gktoken"]} - godownflag = int(request.params["godownflag"]) - goid = int(request.params["goid"]) - goname = request.params["goname"] + header={"gktoken":request.headers["gktoken"]} + godownflag = int(request.params["godownflag"]) + goid = int(request.params["goid"]) + goname = request.params["goname"] - if godownflag==1: - goaddr = request.params["goaddr"] - productcode = int(request.params["productcode"]) - calculateto = request.params["calculateto"] - scalculateto = request.params["calculateto"] + if godownflag==1: + goaddr = request.params["goaddr"] + productcode = int(request.params["productcode"]) + calculateto = request.params["calculateto"] + scalculateto = request.params["calculateto"] - productdesc = request.params["productdesc"] - if int(request.params["backflag"]) == 1 : - scalculateto = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d') - date = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%d-%m-%Y') - stockrefresh = {"productcode":productcode,"calculateto":calculateto,"productdesc":"All Products","godownflag":godownflag,"goid":goid,"date":date } - result = requests.get("http://127.0.0.1:6543/report?stockonhandreport&productcode=all&enddate=%s"%(scalculateto),headers=header) + productdesc = request.params["productdesc"] + if int(request.params["backflag"]) == 1 : + scalculateto = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d') + date = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%d-%m-%Y') + stockrefresh = {"productcode":productcode,"calculateto":calculateto,"productdesc":"All Products","godownflag":godownflag,"goid":goid,"date":date } + result = requests.get("http://127.0.0.1:6543/report?stockonhandreport&productcode=all&enddate=%s"%(scalculateto),headers=header) - if int(request.params["backflag"]) == 0: - scalculateto = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d') - date = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%d-%m-%Y') - stockrefresh = {"productcode":productcode,"calculateto":datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d'),"productdesc":productdesc,"godownflag":godownflag,"goid":goid,"date":date} - result = requests.get("http://127.0.0.1:6543/report?stockonhandreport&productcode=%d&enddate=%s"%(productcode,scalculateto),headers=header) + if int(request.params["backflag"]) == 0: + scalculateto = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d') + date = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%d-%m-%Y') + stockrefresh = {"productcode":productcode,"calculateto":datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d'),"productdesc":productdesc,"godownflag":godownflag,"goid":goid,"date":date} + result = requests.get("http://127.0.0.1:6543/report?stockonhandreport&productcode=%d&enddate=%s"%(productcode,scalculateto),headers=header) - if godownflag == 1 and int(request.params["backflag"]) == 3 : - scalculateto = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d') - date = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%d-%m-%Y') - stockrefresh = {"productcode":productcode,"calculateto":calculateto,"productdesc":productdesc,"godownflag":godownflag,"goid":goid,"date":date} - result = requests.get("http://127.0.0.1:6543/report?godownwisestockonhand&type=pg&goid=%d&productcode=%d&enddate=%s"%(goid, productcode, scalculateto),headers=header) + if godownflag == 1 and int(request.params["backflag"]) == 3 : + scalculateto = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d') + date = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%d-%m-%Y') + stockrefresh = {"productcode":productcode,"calculateto":calculateto,"productdesc":productdesc,"godownflag":godownflag,"goid":goid,"date":date} + result = requests.get("http://127.0.0.1:6543/report?godownwisestockonhand&type=pg&goid=%d&productcode=%d&enddate=%s"%(goid, productcode, scalculateto),headers=header) - if godownflag == 1 and int(request.params["backflag"]) == 2 and goid == 0: - scalculateto = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d') - date = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%d-%m-%Y') - stockrefresh = {"productcode":productcode,"calculateto":calculateto,"productdesc":productdesc,"godownflag":godownflag,"goid":goid,"date":date} - result = requests.get("http://127.0.0.1:6543/report?godownwisestockonhand&type=pag&productcode=%d&enddate=%s"%(productcode, scalculateto),headers=header) + if godownflag == 1 and int(request.params["backflag"]) == 2 and goid == 0: + scalculateto = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d') + date = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%d-%m-%Y') + stockrefresh = {"productcode":productcode,"calculateto":calculateto,"productdesc":productdesc,"godownflag":godownflag,"goid":goid,"date":date} + result = requests.get("http://127.0.0.1:6543/report?godownwisestockonhand&type=pag&productcode=%d&enddate=%s"%(productcode, scalculateto),headers=header) - if godownflag==1: - return render_to_response("gkwebapp:templates/showstockonhandreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh,"godown":goname, "goaddr":goaddr},request=request) + if godownflag==1: + return render_to_response("gkwebapp:templates/showstockonhandreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh,"godown":goname, "goaddr":goaddr},request=request) - return render_to_response("gkwebapp:templates/showstockonhandreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh,"godown":goname},request=request) + return render_to_response("gkwebapp:templates/showstockonhandreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh,"godown":goname},request=request) @view_config(route_name="product",request_param="type=showcategorywisestockonhandreport") def showcategorywisestockonhandreport(request): - header={"gktoken":request.headers["gktoken"]} - godownflag = int(request.params["godownflag"]) - if godownflag == 0: - goid = "-1" - else: - goid = request.params["goid"] - categorycode = int(request.params["categorycode"]) - calculateto = request.params["calculateto"] - categoryname = request.params["categoryname"] - subcategoryname = request.params["subcategoryname"] - specname = request.params["specname"] - stockrefresh = {"categorycode":categorycode,"calculateto":datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d'),"categoryname":categoryname, "subcategoryname": subcategoryname, "specname":specname, "godownflag":godownflag,"goid":goid,"date":datetime.strptime(calculateto, '%Y-%m-%d').strftime('%d-%m-%Y')} - if int(request.params["backflag"]) == 1 : - result = requests.get("http://127.0.0.1:6543/report?stockonhandreport&productcode=all&enddate=%s"%(calculateto),headers=header) - if godownflag==1: - if request.params["goid"] == "all": - return render_to_response("gkwebapp:templates/showcategorywisestockonhandreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh},request=request) - else: - return render_to_response("gkwebapp:templates/showcategorywisestockonhandreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh,"godown":request.params["goname"], "goaddr":request.params["goaddr"]},request=request) - else: - return render_to_response("gkwebapp:templates/showcategorywisestockonhandreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh},request=request) - - if int(request.params["backflag"]) == 0: - result = requests.get("http://127.0.0.1:6543/report?type=categorywisestockonhand&categorycode=%d&subcategorycode=%s&speccode=%s&goid=%s&enddate=%s"%(categorycode, request.params["subcategorycode"], request.params["speccode"], goid, calculateto),headers=header) - if godownflag==1: - if request.params["goid"] == "all": - return render_to_response("gkwebapp:templates/showcategorywisestockonhandreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh},request=request) - else: - return render_to_response("gkwebapp:templates/showcategorywisestockonhandreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh,"godown":request.params["goname"], "goaddr":request.params["goaddr"]},request=request) - else: - return render_to_response("gkwebapp:templates/showcategorywisestockonhandreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh},request=request) - - '''if godownflag == 1 and int(request.params["backflag"]) == 3 : - scalculateto = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d') - date = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%d-%m-%Y') - result = requests.get("http://127.0.0.1:6543/report?godownwisestockonhand&type=pg&goid=%d&productcode=%d&enddate=%s"%(goid, productcode, scalculateto),headers=header) - - if godownflag == 1 and int(request.params["backflag"]) == 2 and goid == 0: - - scalculateto = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d') - date = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%d-%m-%Y') - result = requests.get("http://127.0.0.1:6543/report?godownwisestockonhand&type=pag&productcode=%d&enddate=%s"%(productcode, scalculateto),headers=header) - ''' + header={"gktoken":request.headers["gktoken"]} + godownflag = int(request.params["godownflag"]) + if godownflag == 0: + goid = "-1" + else: + goid = request.params["goid"] + categorycode = int(request.params["categorycode"]) + calculateto = request.params["calculateto"] + categoryname = request.params["categoryname"] + subcategoryname = request.params["subcategoryname"] + specname = request.params["specname"] + stockrefresh = {"categorycode":categorycode,"calculateto":datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d'),"categoryname":categoryname, "subcategoryname": subcategoryname, "specname":specname, "godownflag":godownflag,"goid":goid,"date":datetime.strptime(calculateto, '%Y-%m-%d').strftime('%d-%m-%Y')} + if int(request.params["backflag"]) == 1 : + result = requests.get("http://127.0.0.1:6543/report?stockonhandreport&productcode=all&enddate=%s"%(calculateto),headers=header) + if godownflag==1: + if request.params["goid"] == "all": + return render_to_response("gkwebapp:templates/showcategorywisestockonhandreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh},request=request) + else: + return render_to_response("gkwebapp:templates/showcategorywisestockonhandreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh,"godown":request.params["goname"], "goaddr":request.params["goaddr"]},request=request) + else: + return render_to_response("gkwebapp:templates/showcategorywisestockonhandreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh},request=request) + + if int(request.params["backflag"]) == 0: + result = requests.get("http://127.0.0.1:6543/report?type=categorywisestockonhand&categorycode=%d&subcategorycode=%s&speccode=%s&goid=%s&enddate=%s"%(categorycode, request.params["subcategorycode"], request.params["speccode"], goid, calculateto),headers=header) + if godownflag==1: + if request.params["goid"] == "all": + return render_to_response("gkwebapp:templates/showcategorywisestockonhandreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh},request=request) + else: + return render_to_response("gkwebapp:templates/showcategorywisestockonhandreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh,"godown":request.params["goname"], "goaddr":request.params["goaddr"]},request=request) + else: + return render_to_response("gkwebapp:templates/showcategorywisestockonhandreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh},request=request) + + '''if godownflag == 1 and int(request.params["backflag"]) == 3 : + scalculateto = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d') + date = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%d-%m-%Y') + result = requests.get("http://127.0.0.1:6543/report?godownwisestockonhand&type=pg&goid=%d&productcode=%d&enddate=%s"%(goid, productcode, scalculateto),headers=header) + + if godownflag == 1 and int(request.params["backflag"]) == 2 and goid == 0: + + scalculateto = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d') + date = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%d-%m-%Y') + result = requests.get("http://127.0.0.1:6543/report?godownwisestockonhand&type=pag&productcode=%d&enddate=%s"%(productcode, scalculateto),headers=header) + ''' @view_config(route_name="product",request_param="type=printablestockonhandreport") def printablestockonhandreport(request): - header={"gktoken":request.headers["gktoken"]} - godownflag = int(request.params["godownflag"]) - goid = int(request.params["goid"]) - goname = request.params["goname"] - productcode = int(request.params["productcode"]) - calculateto = request.params["calculateto"] - productdesc = request.params["productdesc"] - scalculateto = request.params["calculateto"] - if int(request.params["backflag"]) == 1 : + header={"gktoken":request.headers["gktoken"]} + godownflag = int(request.params["godownflag"]) + goid = int(request.params["goid"]) + goname = request.params["goname"] + productcode = int(request.params["productcode"]) + calculateto = request.params["calculateto"] + productdesc = request.params["productdesc"] + scalculateto = request.params["calculateto"] + if int(request.params["backflag"]) == 1 : - scalculateto = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d') - stockrefresh = {"productcode":productcode,"calculateto":calculateto,"productdesc":"all","godownflag":godownflag,"goid":goid } + scalculateto = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d') + stockrefresh = {"productcode":productcode,"calculateto":calculateto,"productdesc":"all","godownflag":godownflag,"goid":goid } - result = requests.get("http://127.0.0.1:6543/report?stockonhandreport&productcode=all&enddate=%s"%(scalculateto),headers=header) + result = requests.get("http://127.0.0.1:6543/report?stockonhandreport&productcode=all&enddate=%s"%(scalculateto),headers=header) - if int(request.params["backflag"]) == 0 : - scalculateto = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d') - stockrefresh = {"productcode":productcode,"calculateto":calculateto,"productdesc":productdesc,"godownflag":godownflag,"goid":goid} - result = requests.get("http://127.0.0.1:6543/report?stockonhandreport&productcode=%d&enddate=%s"%(productcode,scalculateto),headers=header) + if int(request.params["backflag"]) == 0 : + scalculateto = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d') + stockrefresh = {"productcode":productcode,"calculateto":calculateto,"productdesc":productdesc,"godownflag":godownflag,"goid":goid} + result = requests.get("http://127.0.0.1:6543/report?stockonhandreport&productcode=%d&enddate=%s"%(productcode,scalculateto),headers=header) - if godownflag == 1 and int(request.params["backflag"]) == 3 : + if godownflag == 1 and int(request.params["backflag"]) == 3 : - scalculateto = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d') - stockrefresh = {"productcode":productcode,"calculateto":calculateto,"productdesc":productdesc,"godownflag":godownflag,"goid":goid} - result = requests.get("http://127.0.0.1:6543/report?godownwisestockonhand&type=pg&goid=%d&productcode=%d&enddate=%s"%(goid, productcode, scalculateto),headers=header) + scalculateto = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d') + stockrefresh = {"productcode":productcode,"calculateto":calculateto,"productdesc":productdesc,"godownflag":godownflag,"goid":goid} + result = requests.get("http://127.0.0.1:6543/report?godownwisestockonhand&type=pg&goid=%d&productcode=%d&enddate=%s"%(goid, productcode, scalculateto),headers=header) - if godownflag == 1 and int(request.params["backflag"]) == 2 and goid == 0: + if godownflag == 1 and int(request.params["backflag"]) == 2 and goid == 0: - scalculateto = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d') - stockrefresh = {"productcode":productcode,"calculateto":calculateto,"productdesc":productdesc,"godownflag":godownflag,"goid":goid} - result = requests.get("http://127.0.0.1:6543/report?godownwisestockonhand&type=pag&productcode=%d&enddate=%s"%(productcode, scalculateto),headers=header) + scalculateto = datetime.strptime(calculateto, '%Y-%m-%d').strftime('%Y-%m-%d') + stockrefresh = {"productcode":productcode,"calculateto":calculateto,"productdesc":productdesc,"godownflag":godownflag,"goid":goid} + result = requests.get("http://127.0.0.1:6543/report?godownwisestockonhand&type=pag&productcode=%d&enddate=%s"%(productcode, scalculateto),headers=header) - return render_to_response("gkwebapp:templates/printstockonhandreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh,"godown":goname},request=request) + return render_to_response("gkwebapp:templates/printstockonhandreport.jinja2",{"gkresult":result.json()["gkresult"],"stockrefresh":stockrefresh,"godown":goname},request=request) -- GitLab From 6034b6bfeb5977293e5a04cb20fda7be415e13ac Mon Sep 17 00:00:00 2001 From: abhi1tb Date: Wed, 11 Oct 2017 09:04:52 +0530 Subject: [PATCH 05/11] States are loaded in Add Product from backend --- gkwebapp/templates/addproduct.jinja2 | 50 +++++----------------------- 1 file changed, 9 insertions(+), 41 deletions(-) diff --git a/gkwebapp/templates/addproduct.jinja2 b/gkwebapp/templates/addproduct.jinja2 index 6d8941c0..8971d4ca 100644 --- a/gkwebapp/templates/addproduct.jinja2 +++ b/gkwebapp/templates/addproduct.jinja2 @@ -100,7 +100,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + {% for state in states %} + {% for key, value in state.items() %} + + {% endfor %} + {% endfor %} + + + -- GitLab From e73f591aa240d0b29af0267b267b31fa8409bddb Mon Sep 17 00:00:00 2001 From: abhi1tb Date: Wed, 11 Oct 2017 13:31:28 +0530 Subject: [PATCH 06/11] Added back license --- gkwebapp/static/js/addproduct.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gkwebapp/static/js/addproduct.js b/gkwebapp/static/js/addproduct.js index 99225c94..4eb00dfe 100644 --- a/gkwebapp/static/js/addproduct.js +++ b/gkwebapp/static/js/addproduct.js @@ -1,4 +1,35 @@ +/* + Copyright (C) 2013, 2014, 2015, 2016, 2017 Digital Freedom Foundation + This file is part of GNUKhata:A modular,robust and Free Accounting System. + + GNUKhata is Free Software; you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation; either version 3 of + the License, or (at your option) any later version. + + GNUKhata is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public + License along with GNUKhata (COPYING); if not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA59 Temple Place, Suite 330, + + + Contributors: + "Abhijith Balan" + "Bhavesh Bawadhane" + "Ishan Masdekar" + "Mohd. Talha Pawaty" + "Navin Karkera" + "Ravishankar Purne" + "Reshma Bhatawadekar" + "Rohini Baraskar" + "Sachin Patil" +*/ $(document).ready(function() { -- GitLab From 97e9da344eedf6a3c2e76d81a83f8849764e9e9b Mon Sep 17 00:00:00 2001 From: abhi1tb Date: Sat, 14 Oct 2017 16:17:37 +0530 Subject: [PATCH 07/11] States in category tax now loads from backend --- gkwebapp/static/js/addproduct.js | 169 ++----------------------------- 1 file changed, 11 insertions(+), 158 deletions(-) diff --git a/gkwebapp/static/js/addproduct.js b/gkwebapp/static/js/addproduct.js index 4eb00dfe..185a5e75 100644 --- a/gkwebapp/static/js/addproduct.js +++ b/gkwebapp/static/js/addproduct.js @@ -46,7 +46,9 @@ $(".productclass").hide(); var specspresent = 0; var selectedgodown; var selectedtaxname; - var selectedtaxstate = 0; + var selectedtaxstate = 0; + var taxfieldhtml = $("#product_tax_table tbody").html(); + var stateshtml = $("#product_tax_table tbody tr:first td:eq(1) select").html(); $(".numtype").numeric({negative: false}); $("#moresmall").on('shown.bs.collapse', function(event) { event.preventDefault(); @@ -412,7 +414,7 @@ $(document).off('keydown', '#newuom').on('keydown', '#newuom', function(event) { $('#adduom').append($('')); } - $("#adduom option").filter(function(i,e){return $(e).text()==unitname}).prop('selected', true); + $("#adduom option").filter(function(i,e){return $(e).text()==unitname;}).prop('selected', true); $("#product_tax_table tbody tr:first td:eq(0) select").focus(); } }) @@ -458,68 +460,12 @@ $("#addcatselect").change(function(event) { if (resp["gkresult"].length>0) { $('#product_tax_table tbody tr').remove(); for (tax of resp["gkresult"]) { - $('#product_tax_table tbody').append(''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''); + $('#product_tax_table tbody').append(taxfieldhtml); + $('#product_tax_table tbody tr:last').attr({value: tax["taxid"]}); $('#product_tax_table tbody tr:last td:eq(1) select').val(tax["state"]); $('#product_tax_table tbody tr:last td:eq(0) select').val(tax["taxname"]); } + $(".tax_name").change(); } }) @@ -570,64 +516,8 @@ $("#addcatselect").change(function(event) { $("#specifications").html(""); $("#specshelp").show(); $('#product_tax_table tbody tr').remove(); - $('#product_tax_table tbody').append(''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''); + $('#product_tax_table tbody').append(taxfieldhtml); + $('#product_tax_table tbody tr:last').attr({value: "New"}); } @@ -685,7 +575,7 @@ function yearpad (str, max) { return str.length < max ? pad("20" + str, max) : str; } else{ - return str; + return str; } } $(document).off("blur",".specday").on("blur",".specday",function(event) { @@ -807,44 +697,7 @@ $(document).off("change",".tax_name").on("change",".tax_name",function(event) var previndex = curindex -1; if ($("#product_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val()=='VAT') { $("#product_tax_table tbody tr:eq("+curindex+") td:eq(1) select").empty(); - $("#product_tax_table tbody tr:eq("+curindex+") td:eq(1) select").append(''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - '').prop('disabled',false); + $("#product_tax_table tbody tr:eq("+curindex+") td:eq(1) select").append(stateshtml).prop('disabled',false); if (curindex > 0) { for (var i = 1; i < curindex+1; i++) { for (var j = 0; j < curindex; j++) { -- GitLab From 2367b686f5b7478f93460b8b98c25210521e5cf9 Mon Sep 17 00:00:00 2001 From: abhi1tb Date: Sat, 14 Oct 2017 17:40:07 +0530 Subject: [PATCH 08/11] Now GST appears on top instead of VAT --- gkwebapp/static/js/addproduct.js | 175 +++++++-------------------- gkwebapp/templates/addproduct.jinja2 | 9 +- 2 files changed, 46 insertions(+), 138 deletions(-) diff --git a/gkwebapp/static/js/addproduct.js b/gkwebapp/static/js/addproduct.js index 185a5e75..eb3e4913 100644 --- a/gkwebapp/static/js/addproduct.js +++ b/gkwebapp/static/js/addproduct.js @@ -38,7 +38,13 @@ $(".productclass").hide(); $(".common").hide(); var godownflag = 0; - $('.modal-backdrop').remove(); + $('.modal-backdrop').remove(); + var taxfieldhtml = $("#product_tax_table tbody").html(); + var stateshtml = $("#product_tax_table tbody tr:first td:eq(1) select").html(); + var delhtml = ''; + $("#product_tax_table tbody tr:first td:eq(1) select").empty(); + $('#product_tax_table tbody tr:first td:eq(1) select').prop("disabled", true); + $("#product_tax_table tbody tr:first td:eq(1) select").append(''); var specday; var specmonth; var specyear; @@ -47,8 +53,6 @@ $(".productclass").hide(); var selectedgodown; var selectedtaxname; var selectedtaxstate = 0; - var taxfieldhtml = $("#product_tax_table tbody").html(); - var stateshtml = $("#product_tax_table tbody tr:first td:eq(1) select").html(); $(".numtype").numeric({negative: false}); $("#moresmall").on('shown.bs.collapse', function(event) { event.preventDefault(); @@ -463,13 +467,16 @@ $("#addcatselect").change(function(event) { $('#product_tax_table tbody').append(taxfieldhtml); $('#product_tax_table tbody tr:last').attr({value: tax["taxid"]}); $('#product_tax_table tbody tr:last td:eq(1) select').val(tax["state"]); - $('#product_tax_table tbody tr:last td:eq(0) select').val(tax["taxname"]); + $('#product_tax_table tbody tr:last td:eq(0) select').val(tax["taxname"]); + $('#product_tax_table tbody tr:last td:eq(2) input').val(tax["taxrate"]); + $('#product_tax_table tbody tr:last td:last').append(delhtml); } + $(".tax_del:first").hide(); $(".tax_name").change(); } }) - .fail(function() { + .fail(function() { console.log("error"); }) .always(function() { @@ -518,12 +525,11 @@ $("#addcatselect").change(function(event) { $('#product_tax_table tbody tr').remove(); $('#product_tax_table tbody').append(taxfieldhtml); $('#product_tax_table tbody tr:last').attr({value: "New"}); - } }); /* -----------------------Spec Key Events---------------------------------------------- */ -$(document).off("keydown",".spec").on("keydown",".spec",function(event) { + $(document).off("keydown",".spec").on("keydown",".spec",function(event) { var curindex = $(this).closest('tr').index(); var nextindex = curindex+1; var previndex = curindex-1; @@ -641,28 +647,8 @@ $(document).off("keydown",".tax_name").on("keydown",".tax_name",function(event) $('#product_tax_table tbody tr:eq('+curindex+') td:eq(1) select').focus(); event.preventDefault(); } - else if (($("#product_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val()=='CVAT' || $("#product_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val()=='IGST' || $("#product_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val()=='CESS') && event.which==13 ) { + else if (($("#product_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val()!='VAT') && event.which==13 ) { event.preventDefault(); - var types = []; - $('#product_tax_table tbody tr').each(function(){ - if ($(".tax_name",this).val()=='CVAT' || $(".tax_name",this).val()=='IGST' || $(".tax_name",this).val()=='CESS' ) { - types.push($(".tax_name",this).val()); - } - }); - types.sort(); - var duplicatetypes = []; - for (var i = 0; i < types.length - 1; i++) { - if (types[i + 1] == types[i]) { - duplicatetypes.push(types[i]); - } - } - if (duplicatetypes.length > 0) { - $("#cvat-alert").alert(); - $("#cvat-alert").fadeTo(2250, 500).slideUp(500, function(){ - $("#cvat-alert").hide(); - }); - return false; - } $('#product_tax_table tbody tr:eq('+curindex+') td:eq(2) input').focus().select(); } else if (event.which==13) { @@ -690,32 +676,29 @@ $(document).off("keydown",".tax_name").on("keydown",".tax_name",function(event) } }); - -$(document).off("change",".tax_name").on("change",".tax_name",function(event) -{ - var curindex = $(this).closest('tr').index(); - var previndex = curindex -1; - if ($("#product_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val()=='VAT') { - $("#product_tax_table tbody tr:eq("+curindex+") td:eq(1) select").empty(); - $("#product_tax_table tbody tr:eq("+curindex+") td:eq(1) select").append(stateshtml).prop('disabled',false); - if (curindex > 0) { - for (var i = 1; i < curindex+1; i++) { - for (var j = 0; j < curindex; j++) { - if ($("#product_tax_table tbody tr:eq("+i+") td:eq(0) select").val() == "CVAT" || $("#product_tax_table tbody tr:eq("+i+") td:eq(0) select").val() == "IGST" || $("#product_tax_table tbody tr:eq("+i+") td:eq(0) select").val() == "CESS" ) { - i = i + 1; - } - selectedtaxstate = $("#product_tax_table tbody tr:eq("+j+") td:eq(1) select option:selected").attr("stateid"); - $('#product_tax_table tbody tr:eq('+i+') td:eq(1) select option[stateid='+selectedtaxstate+']').prop('hidden', true).prop('disabled', true); + $(document).off("change",".tax_name").on("change",".tax_name",function(event){ + var curindex = $(this).closest('tr').index(); + if ($("#product_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val()=='VAT') { + $("#product_tax_table tbody tr:eq("+curindex+") td:eq(1) select").empty(); + $('#product_tax_table tbody tr:eq('+curindex+') td:eq(1) select').prop("disabled", false); + $("#product_tax_table tbody tr:eq("+curindex+") td:eq(1) select").append(stateshtml); + $("#product_tax_table tbody tr:eq("+curindex+") td:eq(1) select option:visible").first().prop("selected", true); } - } - } - } - else { - $("#product_tax_table tbody tr:eq("+curindex+") td:eq(1) select").empty(); - $("#product_tax_table tbody tr:eq("+curindex+") td:eq(1) select").append('').prop('disabled','true'); - } - selectedtaxname = $("#product_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val(); -}); + else { + $("#product_tax_table tbody tr:eq("+curindex+") td:eq(1) select").empty(); + $('#product_tax_table tbody tr:eq('+curindex+') td:eq(1) select').prop("disabled", true); + $("#product_tax_table tbody tr:eq("+curindex+") td:eq(1) select").append(''); + } + var previndex = curindex -1; + for (let j = 0; j < curindex + 1; j++) { + if ($("#product_tax_table tbody tr:eq("+j+") td:eq(0) select option:selected").val() == "VAT") { + var selectedtaxstate = $("#product_tax_table tbody tr:eq("+j+") td:eq(1) select option:selected").attr("stateid"); + for (let i=j+1; i<=curindex+1;i++){ + $('#product_tax_table tbody tr:eq('+i+') td:eq(1) select option[stateid='+selectedtaxstate+']').remove(); + } + } + } + }); $(document).off("keydown",".tax_state").on("keydown",".tax_state",function(event) @@ -745,24 +728,6 @@ $(document).off("keydown",".tax_state").on("keydown",".tax_state",function(event } else if (event.which==13) { event.preventDefault(); - var states = []; - $('#product_tax_table tbody tr').each(function(){ - states.push($(".tax_state",this).val()); - }); - states.sort(); - var duplicatestates = []; - for (var i = 0; i < states.length - 1; i++) { - if (states[i + 1] == states[i]) { - duplicatestates.push(states[i]); - } - } - if (duplicatestates.length > 0) { - $("#tax-same-alert").alert(); - $("#tax-same-alert").fadeTo(2250, 500).slideUp(500, function(){ - $("#tax-same-alert").hide(); - }); - return false; - } $('#product_tax_table tbody tr:eq('+curindex+') td:eq(2) input').focus().select(); } }); @@ -776,13 +741,13 @@ $(document).off("keydown",".tax_rate").on("keydown",".tax_rate",function(event) $('#product_tax_table tbody tr:eq('+curindex1+') td:eq(2) input').val(parseFloat($('#product_tax_table tbody tr:eq('+curindex1+') td:eq(2) input').val()).toFixed(2)); event.preventDefault(); if ($('#product_tax_table tbody tr:eq('+curindex1+') td:eq(1) select option:selected').attr("stateid") < 1 && selectedtaxname == "VAT") { - $("#tax_state-blank-alert").alert(); + $("#tax_state-blank-alert").alert(); $("#tax_state-blank-alert").fadeTo(2250, 500).slideUp(500, function(){ $("#tax_state-blank-alert").hide(); }); return false; } - if (curindex1 != ($("#product_tax_table tbody tr").length-1)) { + if (curindex1 != ($("#product_tax_table tbody tr").length-1)) { $('#product_tax_table tbody tr:eq('+nextindex1+') td:eq(0) select').focus().select(); } else { @@ -803,66 +768,10 @@ $(document).off("keydown",".tax_rate").on("keydown",".tax_rate",function(event) return false; } - $('#product_tax_table tbody').append(''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''); - $(".tax_rate").numeric(); + $('#product_tax_table tbody').append(taxfieldhtml); + + $(".tax_rate").numeric(); + $(".tax_name:last").change(); if (selectedtaxname == "CVAT" || selectedtaxname == "IGST" || selectedtaxname == "CESS") { $('#product_tax_table tbody tr:eq('+nextindex1+') td:eq(0) select option[value='+selectedtaxname+']').prop('hidden', true).prop('disabled', true); } diff --git a/gkwebapp/templates/addproduct.jinja2 b/gkwebapp/templates/addproduct.jinja2 index 8971d4ca..2050f5c1 100644 --- a/gkwebapp/templates/addproduct.jinja2 +++ b/gkwebapp/templates/addproduct.jinja2 @@ -99,13 +99,12 @@ -- GitLab From 0f5946e227c59af4efc67345440a0be556c565ca Mon Sep 17 00:00:00 2001 From: abhi1tb Date: Sat, 14 Oct 2017 18:32:34 +0530 Subject: [PATCH 09/11] Add Category Tax Events working properly --- gkwebapp/static/js/addproduct.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/gkwebapp/static/js/addproduct.js b/gkwebapp/static/js/addproduct.js index eb3e4913..bb3ce7a4 100644 --- a/gkwebapp/static/js/addproduct.js +++ b/gkwebapp/static/js/addproduct.js @@ -769,12 +769,17 @@ $(document).off("keydown",".tax_rate").on("keydown",".tax_rate",function(event) } $('#product_tax_table tbody').append(taxfieldhtml); - + $('#product_tax_table tbody tr:eq('+nextindex1+') td:last').append(delhtml); $(".tax_rate").numeric(); + for (let j = 0; j < curindex1 + 1; j++) { + var selectedtax = $("#product_tax_table tbody tr:eq("+j+") td:eq(0) select option:selected").val(); + if (selectedtax != "VAT") { + for (let i=j+1; i<=curindex1+1;i++){ + $('#product_tax_table tbody tr:eq('+i+') td:eq(0) select option[value='+selectedtax+']').remove(); + } + } + } $(".tax_name:last").change(); - if (selectedtaxname == "CVAT" || selectedtaxname == "IGST" || selectedtaxname == "CESS") { - $('#product_tax_table tbody tr:eq('+nextindex1+') td:eq(0) select option[value='+selectedtaxname+']').prop('hidden', true).prop('disabled', true); - } $('#product_tax_table tbody tr:eq('+nextindex1+') td:eq(0) select').focus().select(); } } -- GitLab From 51d3be6ebc775fb5b4425983c7df3ac871ca25cd Mon Sep 17 00:00:00 2001 From: abhi1tb Date: Mon, 16 Oct 2017 14:21:26 +0530 Subject: [PATCH 10/11] Applied changes in Edit Product too --- gkwebapp/static/js/editproduct.js | 227 +++++---------------- gkwebapp/templates/editproductspecs.jinja2 | 13 +- 2 files changed, 55 insertions(+), 185 deletions(-) diff --git a/gkwebapp/static/js/editproduct.js b/gkwebapp/static/js/editproduct.js index 68ee1602..cc45b131 100644 --- a/gkwebapp/static/js/editproduct.js +++ b/gkwebapp/static/js/editproduct.js @@ -7,9 +7,11 @@ $(document).ready(function() { var specdate; var selectedgodown; var selectedtaxname; - var selectedtaxstate; + var selectedtaxstate; + var taxhtml; + var stateshtml; $("#prodselect").focus(); - $(".product_tax_disable").prop('disabled',true); + $(".product_tax_disable").prop('disabled',true); $(".product_cat_tax_disable").prop('disabled',true); $(document).off('focus', '.numtype').on('focus', '.numtype', function(event) { event.preventDefault(); @@ -18,14 +20,14 @@ $(document).ready(function() { }); - if(sessionStorage.invflag==0){ + if(sessionStorage.invflag==0){ $(".noinventory").hide(); $("#taxhelp3").hide(); $("#taxhelp4").show(); } - $(document).off('blur', '.numtype').on('blur', '.numtype', function(event) { + $(document).off('blur', '.numtype').on('blur', '.numtype', function(event) { event.preventDefault(); /* Act on the event */ if ($(this).val()=="" && !$(this).hasClass("hsn")) @@ -158,7 +160,7 @@ $(document).ready(function() { $("#prodselect").focus(); } }); - $(document).on('keydown', '#gscode', function(event) { + $(document).on('keydown', '#gscode', function(event) { if (event.which==13) { event.preventDefault(); if($("#gsflag").val()=='7'){ @@ -207,7 +209,7 @@ $("#product_edit_tax_table tbody tr:first td:eq(0) select").focus(); $("#editgodownflag").focus().select(); } else { - $(".editgodown_ob").eq(n-1).focus().select(); + $(".editgodown_ob").eq(n-1).focus().select(); } } else if (event.which==173) { @@ -286,22 +288,22 @@ $("#product_edit_tax_table tbody tr:first td:eq(0) select").focus(); .done(function(resp) { console.log("success"); if (resp["gkresult"].length > 0) { - var taxhtml = $('#product_edit_tax_table tbody tr:first').html(); - - $('#product_edit_tax_table tbody tr').remove(); + taxhtml = $('#product_edit_tax_table tbody tr:first').html(); + stateshtml = $('#product_edit_tax_table tbody tr:first td:eq(1) select').html(); + $('#product_edit_tax_table tbody tr:first').remove(); for (tax of resp["gkresult"]) { - $('#product_edit_tax_table tbody').append(''+ taxhtml + ''); + $('#product_edit_tax_table tbody').append(''+ taxhtml + ''); $('#product_edit_tax_table tbody tr:last td:last').append(''); - $(".product_tax_disable").prop('disabled',true); - $('#product_edit_tax_table tbody tr:last td:eq(1) select').val(tax["state"]); + $('#product_edit_tax_table tbody tr:last td:eq(1) select').val(tax["state"]); $('#product_edit_tax_table tbody tr:last td:eq(0) select').val(tax["taxname"]); $('#product_edit_tax_table tbody tr:last td:eq(2) input').val(tax["taxrate"]); } + $(".tax_del:first").hide(); } - existingnonetax = resp["gkresult"]; + existingnonetax = resp["gkresult"]; }) .fail(function() { console.log("error"); @@ -648,7 +650,7 @@ $("#product_edit_tax_table tbody tr:first td:eq(0) select").focus(); $('#product_edit_tax_table tbody tr:eq('+curindex+') td:eq(1) select').focus(); event.preventDefault(); } - else if (($("#product_edit_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val()=='CVAT' || $("#product_edit_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val() =='IGST' || $("#product_edit_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val() =='CESS') && event.which==13 ) { + else if (($("#product_edit_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val()!='VAT') && event.which==13 ) { event.preventDefault(); var types = []; $('#product_edit_tax_table tbody tr').each(function(){ @@ -709,65 +711,27 @@ $("#product_edit_tax_table tbody tr:first td:eq(0) select").focus(); $(document).off("change",".tax_name").on("change",".tax_name",function(event) { - var curindex = $(this).closest('tr').index(); - var previndex = curindex -1; - if ($("#product_edit_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val()=='VAT') { - $("#product_edit_tax_table tbody tr:eq("+curindex+") td:eq(1) select").empty(); - $("#product_edit_tax_table tbody tr:eq("+curindex+") td:eq(1) select").append(''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - '').prop('disabled', false); - if (curindex > 0) { - for (var i = 1; i < curindex+1; i++) { - for (var j = 0; j < curindex; j++) { - if ($("#product_edit_tax_table tbody tr:eq("+i+") td:eq(0) select").val() == "CVAT" || $("#product_edit_tax_table tbody tr:eq("+i+") td:eq(0) select").val() == "IGST" || $("#product_edit_tax_table tbody tr:eq("+i+") td:eq(0) select").val() == "CESS") { - i = i + 1; - } - selectedtaxstate = $("#product_edit_tax_table tbody tr:eq("+j+") td:eq(1) select option:selected").attr("stateid"); - $('#product_edit_tax_table tbody tr:eq('+i+') td:eq(1) select option[stateid='+selectedtaxstate+']').prop('hidden', true).prop('disabled', true); + var curindex = $(this).closest('tr').index(); + if ($("#product_edit_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val()=='VAT') { + $("#product_edit_tax_table tbody tr:eq("+curindex+") td:eq(1) select").empty(); + $('#product_edit_tax_table tbody tr:eq('+curindex+') td:eq(1) select').prop("disabled", false); + $("#product_edit_tax_table tbody tr:eq("+curindex+") td:eq(1) select").append(stateshtml); + $("#product_edit_tax_table tbody tr:eq("+curindex+") td:eq(1) select option:visible").first().prop("selected", true); + } + else { + $("#product_edit_tax_table tbody tr:eq("+curindex+") td:eq(1) select").empty(); + $('#product_edit_tax_table tbody tr:eq('+curindex+') td:eq(1) select').prop("disabled", true); + $("#product_edit_tax_table tbody tr:eq("+curindex+") td:eq(1) select").append(''); + } + var previndex = curindex -1; + for (let j = 0; j < curindex + 1; j++) { + if ($("#product_edit_tax_table tbody tr:eq("+j+") td:eq(0) select option:selected").val() == "VAT") { + var selectedtaxstate = $("#product_edit_tax_table tbody tr:eq("+j+") td:eq(1) select option:selected").attr("stateid"); + for (let i=j+1; i<=curindex+1;i++){ + $('#product_edit_tax_table tbody tr:eq('+i+') td:eq(1) select option[stateid='+selectedtaxstate+']').remove(); + } } - } } - } - else { - $("#product_edit_tax_table tbody tr:eq("+curindex+") td:eq(1) select").empty(); - $("#product_edit_tax_table tbody tr:eq("+curindex+") td:eq(1) select").append('').prop('disabled',true); - } - selectedtaxname = $("#product_edit_tax_table tbody tr:eq("+curindex+") td:eq(0) select").val(); }); $(document).off("keydown",".tax_state").on("keydown",".tax_state",function(event) @@ -797,26 +761,6 @@ $("#product_edit_tax_table tbody tr:first td:eq(0) select").focus(); } else if (event.which==13) { event.preventDefault(); - var edittaxstates = []; - $('#product_edit_tax_table tbody tr').each(function(){ - edittaxstates.push($(".tax_state",this).val()); - }); - if (edittaxstates.length>1) { - edittaxstates.sort(); - var duplicatestates = []; - for (var i = 0; i < edittaxstates.length - 1; i++) { - if (edittaxstates[i+1] == edittaxstates[i]) { - duplicatestates.push(edittaxstates[i]); - } - } - if (duplicatestates.length > 0) { - $("#tax-same-alert").alert(); - $("#tax-same-alert").fadeTo(2250, 500).slideUp(500, function(){ - $("#tax-same-alert").hide(); - }); - return false; - } - } $('#product_edit_tax_table tbody tr:eq('+curindex+') td:eq(2) input').focus().select(); } }); @@ -828,30 +772,6 @@ $("#product_edit_tax_table tbody tr:first td:eq(0) select").focus(); var previndex1 = curindex1-1; if (event.which==13) { event.preventDefault(); - if ($('#product_edit_tax_table tbody tr:eq('+curindex1+') td:eq(0) select option:selected').val()=="IGST" || $('#product_edit_tax_table tbody tr:eq('+curindex1+') td:eq(0) select option:selected').val()=="CESS" && $("#vatorgstflag").val()!='29') { - if ($("#invflag").val()==0){ - $("#epsubmit").focus(); - } - if($('#gsflag').val() == '7') { - if ($("#editgodownpresence").val() == 0) { - $("#editopeningstock").focus().select(); - } - else { - if ($("#editgodownflag").val() == 1) { - $('#editgodown_ob_table tbody tr:first td:eq(0) select').focus().select(); - } - else if ($("#editgodownflag").val() == 0) { - $("#editgodownflag").focus().select(); - } - } - - } - else { - $("#epsubmit").focus(); - } - } - else { - if ($('#product_edit_tax_table tbody tr:eq('+curindex1+') td:eq(1) select option:selected').attr("stateid") < 1 && selectedtaxname == "VAT") { $("#tax_state-blank-alert").alert(); $("#tax_state-blank-alert").fadeTo(2250, 500).slideUp(500, function(){ @@ -879,72 +799,21 @@ $("#product_edit_tax_table tbody tr:first td:eq(0) select").focus(); $('#product_edit_tax_table tbody tr:eq('+curindex1+') td:eq(2) input').focus(); return false; } - $('#product_edit_tax_table tbody').append(''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''); - $(".tax_rate").numeric(); - if (selectedtaxname == "CVAT" || selectedtaxname == "IGST" || selectedtaxname == "CESS") { - $('#product_edit_tax_table tbody tr:eq('+nextindex1+') td:eq(0) select option[value='+selectedtaxname+']').prop('hidden', true).prop('disabled', true); - } + $('#product_edit_tax_table tbody').append(''+ taxhtml + ''); + $('#product_edit_tax_table tbody tr:last td:last').append(''); + $(".product_tax_disable").prop('disabled',false); + $(".tax_rate").numeric(); + for (let j = 0; j < curindex1 + 1; j++) { + var selectedtax = $("#product_edit_tax_table tbody tr:eq("+j+") td:eq(0) select option:selected").val(); + if (selectedtax != "VAT") { + for (let i=j+1; i<=curindex1+1;i++){ + $('#product_edit_tax_table tbody tr:eq('+i+') td:eq(0) select option[value='+selectedtax+']').remove(); + } + } + } + $(".tax_name:last").change(); $('#product_edit_tax_table tbody tr:eq('+nextindex1+') td:eq(0) select').focus().select(); } - } } else if(event.which==190 && event.shiftKey) { diff --git a/gkwebapp/templates/editproductspecs.jinja2 b/gkwebapp/templates/editproductspecs.jinja2 index a4667465..afb33a63 100644 --- a/gkwebapp/templates/editproductspecs.jinja2 +++ b/gkwebapp/templates/editproductspecs.jinja2 @@ -136,22 +136,23 @@ -- GitLab From 9237d0c6710926d1488853754d85d3055d7a65a0 Mon Sep 17 00:00:00 2001 From: abhi1tb Date: Mon, 16 Oct 2017 16:43:32 +0530 Subject: [PATCH 11/11] Added Select Tax and Select State to options --- gkwebapp/static/js/addproduct.js | 12 ++++++------ gkwebapp/templates/addproduct.jinja2 | 14 ++++++++++++-- gkwebapp/templates/editinvoice.jinja2 | 2 +- gkwebapp/templates/editproductspecs.jinja2 | 3 ++- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/gkwebapp/static/js/addproduct.js b/gkwebapp/static/js/addproduct.js index bb3ce7a4..eea6a975 100644 --- a/gkwebapp/static/js/addproduct.js +++ b/gkwebapp/static/js/addproduct.js @@ -133,7 +133,7 @@ $(document).off('blur', '.numtype').on('blur', '.numtype', function(event) { } }); -$(document).off('blur', '#addproddesc').on('blur', '#addproddesc',function(event) { + $(document).off('blur', '#addproddesc').on('blur', '#addproddesc',function(event) { /* Act on the event */ $("#addproddesc").val($("#addproddesc").val().trim()); @@ -750,17 +750,17 @@ $(document).off("keydown",".tax_rate").on("keydown",".tax_rate",function(event) if (curindex1 != ($("#product_tax_table tbody tr").length-1)) { $('#product_tax_table tbody tr:eq('+nextindex1+') td:eq(0) select').focus().select(); } - else { - if ($('#product_tax_table tbody tr:eq('+curindex1+') td:eq(0) select').val()=="") { + else { + if ($('#product_tax_table tbody tr:eq('+curindex1+') td:eq(0) select').val()==null) { $("#tax-name-blank-alert").alert(); $("#tax-name-blank-alert").fadeTo(2250, 500).slideUp(500, function(){ $("#tax-name-blank-alert").hide(); }); $('#product_tax_table tbody tr:eq('+curindex1+') td:eq(0) select').focus(); return false; - } - if ($('#product_tax_table tbody tr:eq('+curindex1+') td:eq(2) input').val()=="") { - $("#tax-rate-blank-alert").alert(); + } + if (!$.isNumeric($('#product_tax_table tbody tr:eq('+curindex1+') td:eq(2) input').val())) { + $("#tax-rate-blank-alert").alert(); $("#tax-rate-blank-alert").fadeTo(2250, 500).slideUp(500, function(){ $("#tax-rate-blank-alert").hide(); }); diff --git a/gkwebapp/templates/addproduct.jinja2 b/gkwebapp/templates/addproduct.jinja2 index 2050f5c1..d996abbc 100644 --- a/gkwebapp/templates/addproduct.jinja2 +++ b/gkwebapp/templates/addproduct.jinja2 @@ -85,7 +85,15 @@
-
+ + +
@@ -99,6 +107,7 @@ diff --git a/gkwebapp/templates/editinvoice.jinja2 b/gkwebapp/templates/editinvoice.jinja2 index 89a8ea3d..9f345808 100644 --- a/gkwebapp/templates/editinvoice.jinja2 +++ b/gkwebapp/templates/editinvoice.jinja2 @@ -8,7 +8,7 @@
- +