Select Pac in admin
This commit is contained in:
parent
f9a73dfd66
commit
a641024a86
|
@ -4,14 +4,17 @@ v 1.33.0 [22-ene-2020]
|
|||
- Mejora: Cambio del mensaje para cuando se intenta dar de alta un cliente ya existente.
|
||||
- Mejora: Solo los admins pueden ver la nómina.
|
||||
- Se agrega un segundo PAC
|
||||
- Se actualizan los catalogos del SAT
|
||||
- Se actualizan los catálogos del SAT
|
||||
|
||||
* IMPORTANTE:
|
||||
Es necesario actualizar los catalogos del SAT
|
||||
Es necesario actualizar los catálogos del SAT
|
||||
```
|
||||
git pull origin master
|
||||
|
||||
cd source/app/models
|
||||
|
||||
python main.py -bk
|
||||
|
||||
python main.py -us
|
||||
```
|
||||
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
#!/usr/bin/env python
|
||||
# ~
|
||||
# ~ PAC
|
||||
# ~ Copyright (C) 2018-2019 Mauricio Baeza Servin - public [AT] elmau [DOT] net
|
||||
# ~
|
||||
# ~ This program is free software: you can redistribute it and/or modify
|
||||
# ~ it under the terms of the GNU General Public License as published by
|
||||
# ~ the Free Software Foundation, either version 3 of the License, or
|
||||
# ~ (at your option) any later version.
|
||||
# ~
|
||||
# ~ This program is distributed in the hope that it will be useful,
|
||||
# ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# ~ GNU General Public License for more details.
|
||||
# ~
|
||||
# ~ You should have received a copy of the GNU General Public License
|
||||
# ~ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
# ~ Siempre consulta la documentación de Finkok
|
||||
# ~ AUTH = Puedes usar credenciales genericas para timbrar, o exclusivas para
|
||||
# ~ cada emisor
|
||||
# ~ RESELLER = Algunos procesos como agregar emisores, solo pueden ser usadas
|
||||
# ~ con una cuenta de reseller
|
||||
|
||||
|
||||
DEBUG = True
|
||||
|
||||
|
||||
AUTH = {
|
||||
'user': '',
|
||||
'pass': '',
|
||||
}
|
||||
|
||||
|
||||
if DEBUG:
|
||||
AUTH = {
|
||||
'user': 'AAA010101AAA',
|
||||
'pass': 'PWD',
|
||||
}
|
|
@ -19,7 +19,6 @@
|
|||
import argparse
|
||||
from decimal import Decimal
|
||||
import sqlite3
|
||||
# ~ import click
|
||||
from peewee import *
|
||||
from playhouse.fields import PasswordField, ManyToManyField
|
||||
from playhouse.shortcuts import case, SQL, cast
|
||||
|
@ -432,6 +431,7 @@ class Configuracion(BaseModel):
|
|||
'chk_config_pagos',
|
||||
'chk_config_divisas',
|
||||
'chk_cfg_pays_data_bank',
|
||||
'chk_usar_nomina',
|
||||
)
|
||||
data = (Configuracion
|
||||
.select()
|
||||
|
@ -440,6 +440,9 @@ class Configuracion(BaseModel):
|
|||
values = {r.clave: util.get_bool(r.valor) for r in data}
|
||||
|
||||
fields = (
|
||||
'txt_ticket_printer',
|
||||
'txt_config_nomina_serie',
|
||||
'txt_config_nomina_folio',
|
||||
'txt_config_cfdipay_serie',
|
||||
'txt_config_cfdipay_folio',
|
||||
)
|
||||
|
@ -481,6 +484,17 @@ class Configuracion(BaseModel):
|
|||
values = {r.clave: util.get_bool(r.valor) for r in data}
|
||||
return values
|
||||
|
||||
@classmethod
|
||||
def get_value(cls, key, default=''):
|
||||
value = default
|
||||
data = (Configuracion
|
||||
.select(Configuracion.valor)
|
||||
.where(Configuracion.clave == key)
|
||||
)
|
||||
if data:
|
||||
value = data[0].valor
|
||||
return value
|
||||
|
||||
@classmethod
|
||||
def get_(cls, keys):
|
||||
if isinstance(keys, str):
|
||||
|
@ -541,7 +555,6 @@ class Configuracion(BaseModel):
|
|||
'chk_ticket_direct_print',
|
||||
'chk_ticket_edit_cant',
|
||||
'chk_ticket_total_up',
|
||||
'chk_usar_nomina',
|
||||
)
|
||||
data = (Configuracion
|
||||
.select()
|
||||
|
@ -549,15 +562,10 @@ class Configuracion(BaseModel):
|
|||
)
|
||||
values = {r.clave: util.get_bool(r.valor) for r in data}
|
||||
fields = (
|
||||
'txt_ticket_printer',
|
||||
'txt_config_nomina_serie',
|
||||
'txt_config_nomina_folio',
|
||||
'txt_config_cfdipay_serie',
|
||||
'txt_config_cfdipay_folio',
|
||||
('lst_pac', 'default'),
|
||||
)
|
||||
# ~ tp = 'txt_ticket_printer'
|
||||
for f in fields:
|
||||
values[f] = Configuracion.get_(f)
|
||||
for k, d in fields:
|
||||
values[k] = Configuracion.get_value(k, d)
|
||||
return values
|
||||
|
||||
if keys['fields'] == 'path_cer':
|
||||
|
@ -5000,7 +5008,7 @@ class Facturas(BaseModel):
|
|||
obj.save()
|
||||
|
||||
enviar_correo = util.get_bool(Configuracion.get_('correo_directo'))
|
||||
pac = Configuracion.get_('pac').lower()
|
||||
pac = Configuracion.get_('lst_pac').lower()
|
||||
|
||||
anticipo = False
|
||||
msg = 'Factura timbrada correctamente'
|
||||
|
|
|
@ -120,6 +120,7 @@ var controllers = {
|
|||
$$('txt_config_cfdipay_serie').attachEvent('onKeyPress', txt_config_cfdipay_serie_press)
|
||||
$$('txt_config_cfdipay_folio').attachEvent('onKeyPress', txt_config_cfdipay_folio_press)
|
||||
$$('chk_usar_nomina').attachEvent('onItemClick', chk_config_item_click)
|
||||
$$('lst_pac').attachEvent('onChange', lst_pac_on_change)
|
||||
|
||||
$$('cmd_subir_bdfl').attachEvent('onItemClick', cmd_subir_bdfl_click)
|
||||
$$('cmd_subir_cfdixml').attachEvent('onItemClick', cmd_subir_cfdixml_click)
|
||||
|
@ -464,7 +465,11 @@ function get_config_values(opt){
|
|||
success: function(text, data, xhr) {
|
||||
var values = data.json()
|
||||
Object.keys(values).forEach(function(key){
|
||||
$$(key).setValue(values[key])
|
||||
if(key=='lst_pac'){
|
||||
set_value(key, values[key])
|
||||
}else{
|
||||
$$(key).setValue(values[key])
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
@ -2534,3 +2539,32 @@ function opt_make_pdf_from_on_change(new_value, old_value){
|
|||
}
|
||||
|
||||
|
||||
function lst_pac_on_change(nv, ov){
|
||||
if(nv=='default'){
|
||||
webix.ajax().del('/config', {id: 'lst_pac'}, function(text, xml, xhr){
|
||||
var msg = 'PAC predeterminado establecido correctamente'
|
||||
if(xhr.status == 200){
|
||||
msg_ok(msg)
|
||||
}else{
|
||||
msg = 'No se pudo eliminar'
|
||||
msg_error(msg)
|
||||
}
|
||||
})
|
||||
}else{
|
||||
webix.ajax().post('/config', {'lst_pac': nv}, {
|
||||
error: function(text, data, xhr) {
|
||||
msg = 'Error al guardar la configuración'
|
||||
msg_error(msg)
|
||||
},
|
||||
success: function(text, data, xhr) {
|
||||
var values = data.json();
|
||||
if (values.ok){
|
||||
msg = 'PAC establecido correctamente'
|
||||
msg_ok(msg)
|
||||
}else{
|
||||
msg_error(values.msg)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -579,3 +579,12 @@ function lst_clear(lst){
|
|||
function lst_parse(lst, values){
|
||||
lst.getList().parse(values)
|
||||
}
|
||||
|
||||
|
||||
function set_value(control, value){
|
||||
obj = $$(control)
|
||||
obj.blockEvent()
|
||||
obj.setValue(value)
|
||||
obj.unblockEvent()
|
||||
}
|
||||
|
||||
|
|
|
@ -643,6 +643,12 @@ var options_templates = [
|
|||
{}]
|
||||
|
||||
|
||||
var options_pac = [
|
||||
{id: 'default', value: 'Predeterminado'},
|
||||
{id: 'comercio', value: 'Comercio Digital'},
|
||||
]
|
||||
|
||||
|
||||
var options_admin_otros = [
|
||||
{maxHeight: 15},
|
||||
{template: 'Facturación', type: 'section'},
|
||||
|
@ -674,6 +680,13 @@ var options_admin_otros = [
|
|||
{view: 'checkbox', id: 'chk_config_decimales_precios', labelWidth: 0,
|
||||
labelRight: 'Precios con 4 decimales'}, {},
|
||||
]},
|
||||
{maxHeight: 15},
|
||||
{cols: [{maxWidth: 15},
|
||||
{view: 'richselect', id: 'lst_pac', name: 'lst_pac', width: 300,
|
||||
label: 'PAC: ', value: 'default', required: false,
|
||||
options: options_pac},
|
||||
{},
|
||||
]},
|
||||
{maxHeight: 20},
|
||||
{template: 'Ayudas varias', type: 'section'},
|
||||
{cols: [{maxWidth: 15},
|
||||
|
@ -700,15 +713,6 @@ var options_admin_otros = [
|
|||
labelRight: 'Mostrar total arriba'},
|
||||
{}]},
|
||||
{maxHeight: 20},
|
||||
{template: 'Nómina', type: 'section'},
|
||||
{cols: [{maxWidth: 15},
|
||||
{view: 'checkbox', id: 'chk_usar_nomina', labelWidth: 0,
|
||||
labelRight: 'Usar timbrado de Nómina'},
|
||||
{view: 'text', id: 'txt_config_nomina_serie', name: 'config_nomina_serie',
|
||||
label: 'Serie', labelWidth: 50, labelAlign: 'right'},
|
||||
{view: 'text', id: 'txt_config_nomina_folio', name: 'config_nomina_folio',
|
||||
label: 'Folio', labelWidth: 50, labelAlign: 'right'},
|
||||
{}]},
|
||||
{}]
|
||||
|
||||
|
||||
|
@ -738,12 +742,15 @@ var options_admin_products = [
|
|||
|
||||
var options_admin_complements = [
|
||||
{maxHeight: 20},
|
||||
{template: 'Complemento de Nómina', type: 'section'},
|
||||
{cols: [{maxWidth: 15},
|
||||
{view: 'checkbox', id: 'chk_config_ine', labelWidth: 0,
|
||||
labelRight: 'Usar el complemento INE'},
|
||||
{view: 'checkbox', id: 'chk_config_edu', labelWidth: 0,
|
||||
labelRight: 'Usar el complemento EDU'},
|
||||
{}]},
|
||||
{view: 'checkbox', id: 'chk_usar_nomina', labelWidth: 0,
|
||||
labelRight: 'Usar complemento de Nómina'},
|
||||
{view: 'text', id: 'txt_config_nomina_serie', name: 'config_nomina_serie',
|
||||
label: 'Serie', labelWidth: 50, labelAlign: 'right'},
|
||||
{view: 'text', id: 'txt_config_nomina_folio', name: 'config_nomina_folio',
|
||||
label: 'Folio', labelWidth: 50, labelAlign: 'right'},
|
||||
{maxWidth: 15}]},
|
||||
{maxHeight: 20},
|
||||
{template: 'Complemento de Pagos', type: 'section'},
|
||||
{cols: [{maxWidth: 15},
|
||||
|
@ -762,6 +769,18 @@ var options_admin_complements = [
|
|||
{view: 'checkbox', id: 'chk_config_divisas', labelWidth: 0,
|
||||
labelRight: 'Usar complemento de divisas'},
|
||||
{maxWidth: 15}]},
|
||||
{maxHeight: 20},
|
||||
{template: 'Complemento INE', type: 'section'},
|
||||
{cols: [{maxWidth: 15},
|
||||
{view: 'checkbox', id: 'chk_config_ine', labelWidth: 0,
|
||||
labelRight: 'Usar el complemento INE'},
|
||||
{maxWidth: 15}]},
|
||||
{maxHeight: 20},
|
||||
{template: 'Complemento para escuelas EDU', type: 'section'},
|
||||
{cols: [{maxWidth: 15},
|
||||
{view: 'checkbox', id: 'chk_config_edu', labelWidth: 0,
|
||||
labelRight: 'Usar el complemento EDU'},
|
||||
{maxWidth: 15}]},
|
||||
]
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue