From 535958f3c1d70bb132f24fc257c159e524cbd634 Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Mon, 12 Feb 2018 16:01:46 -0600 Subject: [PATCH] Fix - Issue #183 --- source/app/models/db.py | 4 ++ source/app/models/main.py | 15 +++++++ source/static/js/controller/partners.js | 58 ++++++++++++++++++++++++- source/static/js/ui/partners.js | 3 ++ 4 files changed, 78 insertions(+), 2 deletions(-) diff --git a/source/app/models/db.py b/source/app/models/db.py index 37c3281..cdd4384 100644 --- a/source/app/models/db.py +++ b/source/app/models/db.py @@ -293,9 +293,13 @@ class StorageEngine(object): return main.Socios.get_(values) def partner(self, values): + if 'opt' in values: + return main.Socios.opt(values) + id = int(values.pop('id', '0')) if id: return main.Socios.actualizar(values, id) + return main.Socios.add(values) def get_products(self, values): diff --git a/source/app/models/main.py b/source/app/models/main.py index 15cbad6..4eb9a91 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -2462,6 +2462,21 @@ class Socios(BaseModel): q = Socios.delete().where(Socios.id==id) return bool(q.execute()) + def _reset_saldo(self, id): + obj = Socios.get(Socios.id==id) + obj.saldo_cliente = 0.0 + obj.save() + return {'ok': True} + + @classmethod + def opt(cls, args): + opt = args.get('opt', '') + if opt == 'reset': + return cls._reset_saldo(cls, args['id']) + + return {'ok': False} + + class Contactos(BaseModel): socio = ForeignKeyField(Socios) diff --git a/source/static/js/controller/partners.js b/source/static/js/controller/partners.js index 7848c7e..2aa28ca 100644 --- a/source/static/js/controller/partners.js +++ b/source/static/js/controller/partners.js @@ -9,6 +9,7 @@ var partners_controllers = { $$('cmd_save_partner').attachEvent('onItemClick', cmd_save_partner_click); $$('cmd_cancel_partner').attachEvent('onItemClick', cmd_cancel_partner_click); $$('cmd_cancel_contact').attachEvent('onItemClick', cmd_cancel_contact_click); + $$('cmd_partner_zero').attachEvent('onItemClick', cmd_partner_zero_click); $$('codigo_postal').attachEvent('onKeyPress', postal_code_key_press); $$('codigo_postal').attachEvent('onTimedKeyPress', postal_code_key_up); $$('colonia').attachEvent('onFocus', colonia_on_focus) @@ -18,6 +19,7 @@ var partners_controllers = { $$("rfc").attachEvent( "onBlur", rfc_lost_focus) $$('multi').attachEvent('onViewChange', multi_change) $$('grid_partners').attachEvent('onItemDblClick', cmd_edit_partner_click) + $$('grid_partners').attachEvent('onSelectChange', grid_partners_on_select_change) } } @@ -317,13 +319,63 @@ function is_client_change(new_value, old_value){ function is_supplier_change(new_value, old_value){ var value = Boolean(new_value) if (value){ - $$("cuenta_proveedor").enable(); + $$("cuenta_proveedor").enable() } else { - $$("cuenta_proveedor").disable(); + $$("cuenta_proveedor").disable() } } +function partner_reset_saldo(id){ + webix.ajax().post('/partners', {opt: 'reset', id: id}, { + error:function(text, data, XmlHttpRequest){ + msg = 'Ocurrio un error, consulta a soporte técnico'; + msg_error(msg) + }, + success:function(text, data, XmlHttpRequest){ + var values = data.json(); + if(values.ok){ + msg = 'Saldo actualizado correctamente' + $$('grid_partners').updateItem(id, {saldo_cliente: 0.0}) + msg_ok(msg) + } + } + }) +} + + +function cmd_partner_zero_click(){ + var g = $$('grid_partners') + var row = g.getSelectedItem() + var saldo = row.saldo_cliente.to_float() + + if(saldo){ + msg = '¿Estas seguro de poner en cero el saldo del cliente?

' + msg += 'ESTA ACCIÓN NO SE PUEDE DESHACER' + webix.confirm({ + title: 'Saldo Cliente', + ok: 'Si', + cancel: 'No', + type: 'confirm-error', + text: msg, + callback:function(result){ + if (result){ + partner_reset_saldo(row.id) + } + } + }) + }else{ + $$('cmd_partner_zero').disable() + } +} + + +function grid_partners_on_select_change(){ + $$('cmd_partner_zero').enable() +} + + + function rfc_lost_focus(prev_view){ //~ var form = this.getFormView() //~ var values = form.getValues() @@ -364,3 +416,5 @@ function multi_partners_change(prevID, nextID){ //~ webix.message(prevID) //~ webix.message(nextID) } + + diff --git a/source/static/js/ui/partners.js b/source/static/js/ui/partners.js index bc082c7..a2572fe 100644 --- a/source/static/js/ui/partners.js +++ b/source/static/js/ui/partners.js @@ -7,6 +7,9 @@ var toolbar_partners = [ autowidth: true, icon: 'user'}, {view: 'button', id: 'cmd_delete_partner', label: 'Eliminar', type: 'iconButton', autowidth: true, icon: 'user-times'}, + {}, + {view: 'button', id: 'cmd_partner_zero', label: 'Saldo 0', type: 'iconButton', + autowidth: true, icon: 'power-off', disabled: true}, ]