Descargar XML

This commit is contained in:
Mauricio Baeza 2017-10-10 22:42:11 -05:00
parent 55190c5faa
commit 4410326efb
8 changed files with 43 additions and 13 deletions

View File

@ -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

View File

@ -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))

View File

@ -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'])

View File

@ -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

View File

@ -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

View File

@ -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
}
}

View File

@ -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)
}
}

View File

@ -17,18 +17,6 @@ var toolbar_invoices_util = [
]
function doc_xml(obj){
var node = "<img src='/static/img/file-xml.png' height='20' width='20' style='margin: 5px 0px'/>"
return node
}
function doc_pdf(obj){
var node = "<img src='/static/img/file-pdf.png' height='20' width='20' style='margin: 5px 0px'/>"
return node
}
function get_icon(tipo){
var node = "<img src='/static/img/file-" + tipo + ".png' height='20' width='20' style='margin: 5px 0px'/>"
return node