forked from elmau/empresa-libre
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: Cambio del mensaje para cuando se intenta dar de alta un cliente ya existente.
|
||||||
- Mejora: Solo los admins pueden ver la nómina.
|
- Mejora: Solo los admins pueden ver la nómina.
|
||||||
- Se agrega un segundo PAC
|
- Se agrega un segundo PAC
|
||||||
- Se actualizan los catalogos del SAT
|
- Se actualizan los catálogos del SAT
|
||||||
|
|
||||||
* IMPORTANTE:
|
* IMPORTANTE:
|
||||||
Es necesario actualizar los catalogos del SAT
|
Es necesario actualizar los catálogos del SAT
|
||||||
```
|
```
|
||||||
git pull origin master
|
git pull origin master
|
||||||
|
|
||||||
cd source/app/models
|
cd source/app/models
|
||||||
|
|
||||||
python main.py -bk
|
python main.py -bk
|
||||||
|
|
||||||
python main.py -us
|
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
|
import argparse
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
import sqlite3
|
import sqlite3
|
||||||
# ~ import click
|
|
||||||
from peewee import *
|
from peewee import *
|
||||||
from playhouse.fields import PasswordField, ManyToManyField
|
from playhouse.fields import PasswordField, ManyToManyField
|
||||||
from playhouse.shortcuts import case, SQL, cast
|
from playhouse.shortcuts import case, SQL, cast
|
||||||
|
@ -432,6 +431,7 @@ class Configuracion(BaseModel):
|
||||||
'chk_config_pagos',
|
'chk_config_pagos',
|
||||||
'chk_config_divisas',
|
'chk_config_divisas',
|
||||||
'chk_cfg_pays_data_bank',
|
'chk_cfg_pays_data_bank',
|
||||||
|
'chk_usar_nomina',
|
||||||
)
|
)
|
||||||
data = (Configuracion
|
data = (Configuracion
|
||||||
.select()
|
.select()
|
||||||
|
@ -440,6 +440,9 @@ class Configuracion(BaseModel):
|
||||||
values = {r.clave: util.get_bool(r.valor) for r in data}
|
values = {r.clave: util.get_bool(r.valor) for r in data}
|
||||||
|
|
||||||
fields = (
|
fields = (
|
||||||
|
'txt_ticket_printer',
|
||||||
|
'txt_config_nomina_serie',
|
||||||
|
'txt_config_nomina_folio',
|
||||||
'txt_config_cfdipay_serie',
|
'txt_config_cfdipay_serie',
|
||||||
'txt_config_cfdipay_folio',
|
'txt_config_cfdipay_folio',
|
||||||
)
|
)
|
||||||
|
@ -481,6 +484,17 @@ class Configuracion(BaseModel):
|
||||||
values = {r.clave: util.get_bool(r.valor) for r in data}
|
values = {r.clave: util.get_bool(r.valor) for r in data}
|
||||||
return values
|
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
|
@classmethod
|
||||||
def get_(cls, keys):
|
def get_(cls, keys):
|
||||||
if isinstance(keys, str):
|
if isinstance(keys, str):
|
||||||
|
@ -541,7 +555,6 @@ class Configuracion(BaseModel):
|
||||||
'chk_ticket_direct_print',
|
'chk_ticket_direct_print',
|
||||||
'chk_ticket_edit_cant',
|
'chk_ticket_edit_cant',
|
||||||
'chk_ticket_total_up',
|
'chk_ticket_total_up',
|
||||||
'chk_usar_nomina',
|
|
||||||
)
|
)
|
||||||
data = (Configuracion
|
data = (Configuracion
|
||||||
.select()
|
.select()
|
||||||
|
@ -549,15 +562,10 @@ class Configuracion(BaseModel):
|
||||||
)
|
)
|
||||||
values = {r.clave: util.get_bool(r.valor) for r in data}
|
values = {r.clave: util.get_bool(r.valor) for r in data}
|
||||||
fields = (
|
fields = (
|
||||||
'txt_ticket_printer',
|
('lst_pac', 'default'),
|
||||||
'txt_config_nomina_serie',
|
|
||||||
'txt_config_nomina_folio',
|
|
||||||
'txt_config_cfdipay_serie',
|
|
||||||
'txt_config_cfdipay_folio',
|
|
||||||
)
|
)
|
||||||
# ~ tp = 'txt_ticket_printer'
|
for k, d in fields:
|
||||||
for f in fields:
|
values[k] = Configuracion.get_value(k, d)
|
||||||
values[f] = Configuracion.get_(f)
|
|
||||||
return values
|
return values
|
||||||
|
|
||||||
if keys['fields'] == 'path_cer':
|
if keys['fields'] == 'path_cer':
|
||||||
|
@ -5000,7 +5008,7 @@ class Facturas(BaseModel):
|
||||||
obj.save()
|
obj.save()
|
||||||
|
|
||||||
enviar_correo = util.get_bool(Configuracion.get_('correo_directo'))
|
enviar_correo = util.get_bool(Configuracion.get_('correo_directo'))
|
||||||
pac = Configuracion.get_('pac').lower()
|
pac = Configuracion.get_('lst_pac').lower()
|
||||||
|
|
||||||
anticipo = False
|
anticipo = False
|
||||||
msg = 'Factura timbrada correctamente'
|
msg = 'Factura timbrada correctamente'
|
||||||
|
|
|
@ -120,6 +120,7 @@ var controllers = {
|
||||||
$$('txt_config_cfdipay_serie').attachEvent('onKeyPress', txt_config_cfdipay_serie_press)
|
$$('txt_config_cfdipay_serie').attachEvent('onKeyPress', txt_config_cfdipay_serie_press)
|
||||||
$$('txt_config_cfdipay_folio').attachEvent('onKeyPress', txt_config_cfdipay_folio_press)
|
$$('txt_config_cfdipay_folio').attachEvent('onKeyPress', txt_config_cfdipay_folio_press)
|
||||||
$$('chk_usar_nomina').attachEvent('onItemClick', chk_config_item_click)
|
$$('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_bdfl').attachEvent('onItemClick', cmd_subir_bdfl_click)
|
||||||
$$('cmd_subir_cfdixml').attachEvent('onItemClick', cmd_subir_cfdixml_click)
|
$$('cmd_subir_cfdixml').attachEvent('onItemClick', cmd_subir_cfdixml_click)
|
||||||
|
@ -464,7 +465,11 @@ function get_config_values(opt){
|
||||||
success: function(text, data, xhr) {
|
success: function(text, data, xhr) {
|
||||||
var values = data.json()
|
var values = data.json()
|
||||||
Object.keys(values).forEach(function(key){
|
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){
|
function lst_parse(lst, values){
|
||||||
lst.getList().parse(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 = [
|
var options_admin_otros = [
|
||||||
{maxHeight: 15},
|
{maxHeight: 15},
|
||||||
{template: 'Facturación', type: 'section'},
|
{template: 'Facturación', type: 'section'},
|
||||||
|
@ -674,6 +680,13 @@ var options_admin_otros = [
|
||||||
{view: 'checkbox', id: 'chk_config_decimales_precios', labelWidth: 0,
|
{view: 'checkbox', id: 'chk_config_decimales_precios', labelWidth: 0,
|
||||||
labelRight: 'Precios con 4 decimales'}, {},
|
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},
|
{maxHeight: 20},
|
||||||
{template: 'Ayudas varias', type: 'section'},
|
{template: 'Ayudas varias', type: 'section'},
|
||||||
{cols: [{maxWidth: 15},
|
{cols: [{maxWidth: 15},
|
||||||
|
@ -700,15 +713,6 @@ var options_admin_otros = [
|
||||||
labelRight: 'Mostrar total arriba'},
|
labelRight: 'Mostrar total arriba'},
|
||||||
{}]},
|
{}]},
|
||||||
{maxHeight: 20},
|
{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 = [
|
var options_admin_complements = [
|
||||||
{maxHeight: 20},
|
{maxHeight: 20},
|
||||||
|
{template: 'Complemento de Nómina', type: 'section'},
|
||||||
{cols: [{maxWidth: 15},
|
{cols: [{maxWidth: 15},
|
||||||
{view: 'checkbox', id: 'chk_config_ine', labelWidth: 0,
|
{view: 'checkbox', id: 'chk_usar_nomina', labelWidth: 0,
|
||||||
labelRight: 'Usar el complemento INE'},
|
labelRight: 'Usar complemento de Nómina'},
|
||||||
{view: 'checkbox', id: 'chk_config_edu', labelWidth: 0,
|
{view: 'text', id: 'txt_config_nomina_serie', name: 'config_nomina_serie',
|
||||||
labelRight: 'Usar el complemento EDU'},
|
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},
|
{maxHeight: 20},
|
||||||
{template: 'Complemento de Pagos', type: 'section'},
|
{template: 'Complemento de Pagos', type: 'section'},
|
||||||
{cols: [{maxWidth: 15},
|
{cols: [{maxWidth: 15},
|
||||||
|
@ -762,6 +769,18 @@ var options_admin_complements = [
|
||||||
{view: 'checkbox', id: 'chk_config_divisas', labelWidth: 0,
|
{view: 'checkbox', id: 'chk_config_divisas', labelWidth: 0,
|
||||||
labelRight: 'Usar complemento de divisas'},
|
labelRight: 'Usar complemento de divisas'},
|
||||||
{maxWidth: 15}]},
|
{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