diff --git a/source/app/controllers/util.py b/source/app/controllers/util.py index 597b3f2..4f468e6 100644 --- a/source/app/controllers/util.py +++ b/source/app/controllers/util.py @@ -860,9 +860,12 @@ def _comprobante(values, options): 'T': 'traslado', } data['tipodecomprobante'] = tipos.get(data['tipodecomprobante']) - data['lugarexpedicion'] = 'C.P. de Expedición: {}'.format(data['lugarexpedicion']) + data['lugarexpedicion'] = \ + 'C.P. de Expedición: {}'.format(data['lugarexpedicion']) data['metododepago'] = options['metododepago'] data['formadepago'] = options['formadepago'] + data['condicionesdepago'] = \ + 'Condiciones de pago: {}'.format(data['condicionesdepago']) data['moneda'] = options['moneda'] data['tipocambio'] = 'Tipo de Cambio: $ {:0.2f}'.format( diff --git a/source/app/models/db.py b/source/app/models/db.py index 1b09e1f..efb247c 100644 --- a/source/app/models/db.py +++ b/source/app/models/db.py @@ -50,6 +50,9 @@ class StorageEngine(object): def _get_formapago(self, values): return main.SATFormaPago.get_activos(values) + def _get_condicionespago(self, values): + return main.CondicionesPago.get_() + def _get_categorias(self, values): return main.Categorias.get_all() diff --git a/source/app/models/main.py b/source/app/models/main.py index 9e81d2c..73968da 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -477,6 +477,22 @@ class CondicionesPago(BaseModel): class Meta: order_by = ('condicion',) + def __str__(self): + return self.condicion + + @classmethod + def get_(cls): + q = CondicionesPago.select(CondicionesPago.condicion).tuples() + data = [r[0] for r in q] + return data + + @classmethod + def get_or(cls, value): + if value is None: + return value + obj, _ = CondicionesPago.get_or_create(condicion=value) + return obj + class SATUnidades(BaseModel): key = TextField(unique=True, index=True) @@ -703,6 +719,9 @@ class Socios(BaseModel): fields['nombre'] = util.spaces(fields['nombre']) fields['slug'] = util.to_slug(fields['nombre']) fields['uso_cfdi'] = fields.pop('uso_cfdi_socio', None) + fields['condicion_pago'] = \ + CondicionesPago.get_or(fields.get('condicion_pago', None)) + fb = ('dias_habiles', 'es_activo', 'es_cliente', 'es_proveedor', 'es_ong') for name in fb: @@ -715,6 +734,9 @@ class Socios(BaseModel): id = int(values['id']) row = Socios.select().where(Socios.id==id).dicts()[0] row['uso_cfdi_socio'] = row.pop('uso_cfdi') + if not row['condicion_pago'] is None: + row['condicion_pago'] = \ + str(CondicionesPago.get(id=row['condicion_pago'])) return row rows = Socios.select(Socios.id, Socios.rfc, Socios.nombre).dicts() @@ -778,6 +800,7 @@ class Socios(BaseModel): def actualizar(cls, values, id): fields = cls._clean(cls, values) try: + print (fields) q = Socios.update(**fields).where(Socios.id==id) q.execute() except IntegrityError: @@ -1368,7 +1391,7 @@ class Facturas(BaseModel): emisor = Emisor.select()[0] values['folio'] = cls._get_folio(cls, values['serie']) values['tipo_cambio'] = float(values['tipo_cambio']) - values['lugar_expedicion'] = emisor.codigo_postal + values['lugar_expedicion'] = emisor.cp_expedicion or emisor.codigo_postal with database_proxy.atomic() as txn: obj = Facturas.create(**values) diff --git a/source/static/js/controller/invoices.js b/source/static/js/controller/invoices.js index 86c7568..5733ff9 100644 --- a/source/static/js/controller/invoices.js +++ b/source/static/js/controller/invoices.js @@ -3,6 +3,19 @@ var grid = null var msg = '' +function get_condicion_pago(){ + webix.ajax().get('/values/condicionespago', { + error: function(text, data, xhr) { + }, + success: function(text, data, xhr) { + var values = data.json(); + $$('txt_condicion_pago').define('suggest', values) + $$('txt_condicion_pago').refresh() + } + }) +} + + function get_series(){ webix.ajax().get('/values/series', function(text, data){ var values = data.json() @@ -91,6 +104,7 @@ function cmd_new_invoice_click(id, e, node){ default_config() form.adjust() form.setValues({id: 0, id_partner: 0, lbl_client: 'Ninguno'}) + get_condicion_pago() grid.clearAll() grid_totals.clearAll() grid_totals.add({id: 1, concepto: 'SubTotal', importe: 0}) @@ -830,3 +844,10 @@ function cmd_prefactura_click(){ } show('PreFactura') } + + +function lst_metodo_pago_change(nv, ov){ + if(nv == 'PPD'){ + $$('lst_forma_pago').setValue('99') + } +} diff --git a/source/static/js/controller/main.js b/source/static/js/controller/main.js index b17e8ee..7d54e0d 100644 --- a/source/static/js/controller/main.js +++ b/source/static/js/controller/main.js @@ -51,6 +51,7 @@ var controllers = { $$('filter_month').attachEvent('onChange', filter_month_change) $$('filter_dates').attachEvent('onChange', filter_dates_change) $$('cmd_prefactura').attachEvent('onItemClick', cmd_prefactura_click) + $$('lst_metodo_pago').attachEvent('onChange', lst_metodo_pago_change) } } diff --git a/source/static/js/controller/partners.js b/source/static/js/controller/partners.js index 30d22c4..ae208eb 100644 --- a/source/static/js/controller/partners.js +++ b/source/static/js/controller/partners.js @@ -1,9 +1,23 @@ +function get_condicion_pago(){ + webix.ajax().get('/values/condicionespago', { + error: function(text, data, xhr) { + }, + success: function(text, data, xhr) { + var values = data.json(); + $$('condicion_pago').define('suggest', values) + $$('condicion_pago').refresh() + } + }) +} + + function cmd_new_partner_click(id, e, node){ $$('form_partner').setValues({ id: 0, pais: 'México', tipo_persona: 1, es_activo: true}) $$('forma_pago').getList().load('/values/formapago') + get_condicion_pago() $$('grid_partners').clearSelection() $$('multi_partners').setValue('partners_new') $$('tab_partner').setValue('Datos Fiscales') @@ -29,6 +43,7 @@ function cmd_edit_partner_click(id, e, node){ webix.message({type:'error', text: msg}) return } + get_condicion_pago() webix.ajax().get("/partners", {id: row['id']}, { error: function(text, data, xhr) { diff --git a/source/static/js/ui/invoices.js b/source/static/js/ui/invoices.js index bfa028f..02f5600 100644 --- a/source/static/js/ui/invoices.js +++ b/source/static/js/ui/invoices.js @@ -227,15 +227,14 @@ var opt_metodo_pago = [ var body_opciones = {rows: [ + {view: 'richselect', id: 'lst_metodo_pago', label: 'Método de Pago', + labelPosition: 'top', options: opt_metodo_pago, value: 'PUE', + required: true}, {view: 'richselect', id: 'lst_forma_pago', name: 'forma_pago', label: 'Forma de Pago', labelPosition: 'top', required: true, options: []}, - {view: 'richselect', id: 'lst_metodo_pago', label: 'Método de Pago', - labelPosition: 'top', options: opt_metodo_pago, readonly: true, - value: 'PUE', - required: true}, {view: 'text', id: 'txt_condicion_pago', label: 'Condiciones de Pago', - labelPosition: 'top'}, + labelPosition: 'top', suggest: []}, ]} diff --git a/source/static/js/ui/partners.js b/source/static/js/ui/partners.js index c927068..e1613e7 100644 --- a/source/static/js/ui/partners.js +++ b/source/static/js/ui/partners.js @@ -76,7 +76,7 @@ var controls_fiscales = [ label: 'Forma de Pago: ', required: true, options: [], invalidMessage: 'La Forma de pago es requerida'}, {view: 'text', id: 'condicion_pago', name: 'condicion_pago', - label: 'Condiciones de Pago: '}, + label: 'Condiciones de Pago: ', suggest: []}, ]}, {cols: [ {view: 'counter', id: 'dias_pago', name: 'dias_pago',