diff --git a/source/app/controllers/main.py b/source/app/controllers/main.py
index 5fcbe6a..0041f76 100644
--- a/source/app/controllers/main.py
+++ b/source/app/controllers/main.py
@@ -196,3 +196,18 @@ class AppFolios(object):
resp.status = falcon.HTTP_200
else:
resp.status = falcon.HTTP_204
+
+
+class AppDocumentos(object):
+
+ def __init__(self, db):
+ self._db = db
+ #~ self._not_json = True
+
+ def on_get(self, req, resp, type_doc, id_doc):
+ req.context['result'], file_name, content_type = \
+ self._db.get_doc(type_doc, id_doc)
+ resp.append_header('Content-Disposition',
+ 'attachment; filename={}'.format(file_name))
+ resp.content_type = content_type
+ resp.status = falcon.HTTP_200
diff --git a/source/app/main.py b/source/app/main.py
index f701a7f..b423f09 100644
--- a/source/app/main.py
+++ b/source/app/main.py
@@ -14,7 +14,8 @@ from middleware import (
from models.db import StorageEngine
from controllers.main import (
AppLogin, AppLogout, AppAdmin, AppEmisor,
- AppMain, AppValues, AppPartners, AppProducts, AppInvoices, AppFolios
+ AppMain, AppValues, AppPartners, AppProducts, AppInvoices, AppFolios,
+ AppDocumentos
)
from settings import DEBUG
@@ -37,6 +38,7 @@ api.add_route('/emisor', AppEmisor(db))
api.add_route('/folios', AppFolios(db))
api.add_route('/main', AppMain(db))
api.add_route('/values/{table}', AppValues(db))
+api.add_route('/doc/{type_doc}/{id_doc}', AppDocumentos(db))
api.add_route('/partners', AppPartners(db))
api.add_route('/products', AppProducts(db))
api.add_route('/invoices', AppInvoices(db))
diff --git a/source/app/middleware.py b/source/app/middleware.py
index 127271c..fc2d00f 100644
--- a/source/app/middleware.py
+++ b/source/app/middleware.py
@@ -46,6 +46,9 @@ class JSONTranslator(object):
def process_response(self, req, resp, resource):
if 'result' not in req.context:
return
+ if '/doc/' in req.path:
+ resp.body = req.context['result']
+ return
resp.body = util.dumps(req.context['result'])
diff --git a/source/app/models/db.py b/source/app/models/db.py
index 81d45ec..fe07363 100644
--- a/source/app/models/db.py
+++ b/source/app/models/db.py
@@ -115,3 +115,9 @@ class StorageEngine(object):
def add_folios(self, values):
return main.Folios.add(values)
+ def get_doc(self, type_doc, id):
+ if type_doc == 'xml':
+ data, file_name = main.Facturas.get_xml(id)
+ content_type = 'application.xml'
+ return data, file_name, content_type
+
diff --git a/source/app/models/main.py b/source/app/models/main.py
index c42b8d9..350b25c 100644
--- a/source/app/models/main.py
+++ b/source/app/models/main.py
@@ -933,6 +933,12 @@ class Facturas(BaseModel):
class Meta:
order_by = ('fecha',)
+ @classmethod
+ def get_xml(cls, id):
+ obj = Facturas.get(Facturas.id==id)
+ name = '{}{}_{}.xml'.format(obj.serie, obj.folio, obj.cliente.rfc)
+ return obj.xml, name
+
@classmethod
def get_(cls, values):
rows = tuple(Facturas
diff --git a/source/static/js/controller/invoices.js b/source/static/js/controller/invoices.js
index a4c2b98..eaf553d 100644
--- a/source/static/js/controller/invoices.js
+++ b/source/static/js/controller/invoices.js
@@ -640,3 +640,12 @@ function cmd_invoice_timbrar_click(){
}
})
}
+
+
+function grid_invoices_click(id, e, node){
+ var row = this.getItem(id)
+ if(id.column == 'xml'){
+ location = '/doc/xml/' + row.id
+ }
+
+}
diff --git a/source/static/js/controller/main.js b/source/static/js/controller/main.js
index b9e64ba..8830ebd 100644
--- a/source/static/js/controller/main.js
+++ b/source/static/js/controller/main.js
@@ -44,6 +44,7 @@ var controllers = {
$$('grid_details').attachEvent('onBeforeEditStart', grid_details_before_edit_start)
$$('grid_details').attachEvent('onBeforeEditStop', grid_details_before_edit_stop)
$$('cmd_invoice_timbrar').attachEvent('onItemClick', cmd_invoice_timbrar_click)
+ $$('grid_invoices').attachEvent('onItemClick', grid_invoices_click)
}
}
diff --git a/source/static/js/ui/invoices.js b/source/static/js/ui/invoices.js
index 6d93c27..1cdcb61 100644
--- a/source/static/js/ui/invoices.js
+++ b/source/static/js/ui/invoices.js
@@ -17,18 +17,6 @@ var toolbar_invoices_util = [
]
-function doc_xml(obj){
- var node = "
"
- return node
-}
-
-
-function doc_pdf(obj){
- var node = "
"
- return node
-}
-
-
function get_icon(tipo){
var node = "
"
return node