diff --git a/source/app/models/db.py b/source/app/models/db.py index 813dee1..82a9262 100644 --- a/source/app/models/db.py +++ b/source/app/models/db.py @@ -51,6 +51,9 @@ class StorageEngine(object): return main.Productos.remove(id) return False + def _get_partner(self, values): + return main.Socios.get_by(values) + def get_partners(self, values): return main.Socios.get_(values) diff --git a/source/app/models/main.py b/source/app/models/main.py index ff1781e..52799ad 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -415,6 +415,29 @@ class Socios(BaseModel): rows = Socios.select(Socios.id, Socios.rfc, Socios.nombre).dicts() return {'ok': True, 'rows': tuple(rows)} + @classmethod + def get_by(cls, values): + id = int(values.get('id', 0)) + if id: + row = (Socios + .select(Socios.id, Socios.nombre, Socios.rfc) + .where(Socios.id==id).dicts()) + if len(row): + return {'ok': True, 'row': row[0]} + return {'ok': False} + + name = values.get('name', '') + if name: + rows = (Socios + .select(Socios.id, Socios.nombre, Socios.rfc) + .where( + Socios.rfc.contains(name) | + Socios.nombre.contains(name)) + .dicts()) + print (tuple(rows)) + return tuple(rows) + return {'ok': False} + @classmethod def add(cls, values): fields = cls._clean(cls, values) diff --git a/source/static/css/app.css b/source/static/css/app.css index fdd73b8..0e5b00a 100644 --- a/source/static/css/app.css +++ b/source/static/css/app.css @@ -25,6 +25,11 @@ color: DarkRed; } +.lbl_partner { + font-weight: bold; + font-size: 125%; +} + .cmd_close_partner div button { background-color: red !important; border-color: red !important; diff --git a/source/static/js/controller/invoices.js b/source/static/js/controller/invoices.js index 9a4ad62..bcf5448 100644 --- a/source/static/js/controller/invoices.js +++ b/source/static/js/controller/invoices.js @@ -108,3 +108,53 @@ function cmd_timbrar_click(id, e, node){ function cmd_close_invoice_click(id, e, node){ $$('multi_invoices').setValue('invoices_home') } + + +function search_partner_by_id(id){ + var msg = '' + webix.ajax().get('/values/partner', {'id': id}, { + error: function(text, data, xhr) { + webix.message({type: 'error', text: 'Error al consultar'}) + }, + success: function(text, data, xhr){ + var values = data.json() + if (values.ok){ + set_partner(values.row) + }else{ + msg = 'No se encontrĂ³ un cliente con la clave: ' + id + webix.message({type:'error', text: msg}) + } + } + }) + +} + + +function set_partner(row){ + var form = $$('form_invoice') + var html = '' + + form.setValues({ + id_partner:row.id, search_partner_id:'', search_partner_name:''}, true) + html += row.nombre + ' (' + row.rfc + ')' + $$('lbl_partner').setValue(html) + form.focus('search_product_id') +} + + +function grid_partners_found_click(obj){ + set_partner(obj) +} + + +function search_partner_id_key_press(code, e){ + var value = this.getValue() + if(code == 13 && value.length > 0){ + var id = parseInt(value, 10) + if (isNaN(id)){ + webix.message({type:'error', text:'Captura una clave vĂ¡lida'}); + }else{ + search_partner_by_id(id) + } + } +} diff --git a/source/static/js/controller/main.js b/source/static/js/controller/main.js index dbde3ba..b2d1317 100644 --- a/source/static/js/controller/main.js +++ b/source/static/js/controller/main.js @@ -29,13 +29,15 @@ var controllers = { $$("chk_automatica").attachEvent("onChange", chk_automatica_change) $$("valor_unitario").attachEvent("onChange", valor_unitario_change) //~ Invoices - $$("cmd_new_invoice").attachEvent("onItemClick", cmd_new_invoice_click); - $$("cmd_edit_invoice").attachEvent("onItemClick", cmd_edit_invoice_click); - $$("cmd_delete_invoice").attachEvent("onItemClick", cmd_delete_invoice_click); + $$("cmd_new_invoice").attachEvent("onItemClick", cmd_new_invoice_click) + $$("cmd_edit_invoice").attachEvent("onItemClick", cmd_edit_invoice_click) + $$("cmd_delete_invoice").attachEvent("onItemClick", cmd_delete_invoice_click) $$('cmd_timbrar').attachEvent('onItemClick', cmd_timbrar_click) $$('cmd_close_invoice').attachEvent('onItemClick', cmd_close_invoice_click) + $$('search_partner_id').attachEvent('onKeyPress', search_partner_id_key_press) + $$('grid_partners_found').attachEvent('onValueSuggest', grid_partners_found_click); } -}; +} function get_partners(){ diff --git a/source/static/js/ui/invoices.js b/source/static/js/ui/invoices.js index 07073be..fdc432c 100644 --- a/source/static/js/ui/invoices.js +++ b/source/static/js/ui/invoices.js @@ -105,7 +105,10 @@ var suggest_partners = { body: { autoConfig: false, header: false, - columns: [{id:"id", hidden: true}, {id:'name', adjust:'data'}, {id:'rfc', adjust:'data'}], + columns: [ + {id: 'id', hidden: true}, + {id: 'nombre', adjust: 'data'}, + {id: 'rfc', adjust: 'data'}], dataFeed:function(text){ if (text.length > 2){ this.load('/values/partner?name=' + text) @@ -179,13 +182,6 @@ var opt_metodo_pago = [ ] -//~ var body_serie_folio = { - //~ view: 'richselect', - //~ id: 'cbo_serie_folio', - //~ options: '/values/seriefolio' -//~ } - - var body_opciones = {rows: [ {view: 'richselect', id: 'lst_forma_pago', label: 'Forma de Pago', labelPosition: 'top', required: true, options: []}, @@ -222,7 +218,10 @@ var controls_generate = [ {view:"search", id:"search_partner_id", name:"search_partner_id", label:"por Clave", labelPosition:'top', maxWidth:200, placeholder:'Captura la clave'}, - {view:"search", id:"search_partner_name", name:"search_partner_name", label:"por Nombre o RFC", labelPosition:'top', suggest:suggest_partners, placeholder:'Captura al menos tres letras'}, + {view: 'search', id: 'search_partner_name', + name: 'search_partner_name', label: 'por Nombre o RFC', + labelPosition: 'top', suggest: suggest_partners, + placeholder: 'Captura al menos tres letras'}, ]}, {cols: [{view: "label", id: "lbl_partner_title", name: "lbl_partner_title", label: 'Seleccionado: ', autowidth:true}, {view: "label", id: "lbl_partner", name: "lbl_partner", label: 'Ninguno'},