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'},