Mejoras en Carta Porte

This commit is contained in:
El Mau 2022-01-27 22:18:28 -06:00
commit bd6ba5d4d0
8 changed files with 116 additions and 11 deletions

View File

@ -1,3 +1,10 @@
v 1.46.0 [27-Ene-2022]
----------------------
- Mejora: Issue #45
- Mejora: Agregar tipos de persimos SCT para Carta Porte
- Mejora: Buscar estado y municipio por CP en Carta Porte
v 1.45.4 [25-Ene-2022]
----------------------
- Error: Al timbrar carta porte.

View File

@ -1,2 +1,2 @@
1.45.4
1.46.0

View File

@ -379,9 +379,12 @@ class CfdiToDict(object):
values['autotransporte'].update(values_auto)
path = '//cartaporte20:Remolques'
node_tmp = node_auto.xpath(path, namespaces=self.NS)[0][0]
values_auto = CaseInsensitiveDict(node_tmp.attrib)
values['autotransporte'].update(values_auto)
try:
node_tmp = node_auto.xpath(path, namespaces=self.NS)[0][0]
values_auto = CaseInsensitiveDict(node_tmp.attrib)
values['autotransporte'].update(values_auto)
except IndexError:
pass
elif 'Ubicaciones' in node.tag:
ubicaciones = []
for n in node:

View File

@ -10378,7 +10378,7 @@ def get_cp(cp):
con = sqlite3.connect(PATH_CP)
cursor = con.cursor()
sql = """
SELECT colonia, municipio, estado
SELECT colonia, municipio, estado, municipios.id_municipio
FROM colonias, municipios, estados
WHERE colonias.id_municipio=municipios.id
AND municipios.id_estado=estados.id
@ -10394,7 +10394,9 @@ def get_cp(cp):
data = {
'estado': rows[0][2],
'municipio': rows[0][1],
'key_municipio': str(rows[0][3]).zfill(3),
}
print(data)
if len(rows) == 1:
data['colonia'] = rows[0][0]
else:

View File

@ -42,7 +42,7 @@ except ImportError:
DEBUG = DEBUG
VERSION = '1.45.4'
VERSION = '1.46.0'
EMAIL_SUPPORT = ('soporte@empresalibre.mx',)
TITLE_APP = '{} v{}'.format(TITLE_APP, VERSION)

View File

@ -90,6 +90,7 @@ var invoices_controllers = {
tv_invoice.attachEvent('onChange', tv_invoice_change)
$$('grid_carta_mercancias').attachEvent('onItemClick', grid_carta_mercancias_click)
$$('grid_carta_ubicaciones').attachEvent('onBeforeEditStop', grid_carta_ubicaciones_before_edit_stop)
$$('cmd_carta_add_product').attachEvent('onItemClick', cmd_carta_add_product_click)
$$('cmd_carta_copy_from_invoice').attachEvent('onItemClick', cmd_carta_copy_from_invoice_click)
$$('cmd_carta_import_json').attachEvent('onItemClick', cmd_carta_import_json_click)
@ -1120,6 +1121,68 @@ function grid_details_before_edit_start(id){
}
function grid_carta_ubicaciones_before_edit_stop(state, editor){
if(editor.column != 'CodigoPostal'){
return true
}
var g = $$('grid_carta_ubicaciones')
var row = g.getItem(editor.row)
var cp = state.value.trim()
if(!cp){
msg = 'El Código Postal no puede estar vacío'
msg_error(msg)
g.blockEvent()
state.value = state.old
g.editCancel()
g.unblockEvent()
return true
}
if(cp.length != 5){
msg = 'El Código Postal debe ser de 5 digitos'
msg_error(msg)
g.blockEvent()
state.value = state.old
g.editCancel()
g.unblockEvent()
return true
}
if(cp.match(/\d/) == null){
msg = 'El Código Postal deben ser solo digitos'
msg_error(msg)
g.blockEvent()
state.value = state.old
g.editCancel()
g.unblockEvent()
return true
}
webix.ajax().get('/values/cp', {cp: cp}, {
error: function(text, data, xhr) {
msg_error('Error al consultar el C.P.')
},
success: function(text, data, xhr) {
var values = data.json();
if (values.estado == undefined){
msg = 'No se encontró el C.P., asegurate de que sea correcto'
msg_error(msg)
} else {
row['Estado'] = opt_carta_estados.find(x => x.value === values.estado).id
row['Municipio'] = values.key_municipio
//~ $$('colonia').define('suggest', [])
//~ $$('colonia').define('suggest', values.colonia)
//~ $$('colonia').refresh()
g.refresh()
msg_ok('Municipio:\n' + values.municipio)
}
}
})
}
function grid_details_before_edit_stop(state, editor){
var row = grid.getItem(editor.row)

View File

@ -147,7 +147,7 @@ var grid_cfdi_pay_cols = [
{id: 'cliente', header: ['Razón Social'], fillspace: true},
{id: 'xml', header: 'XML', adjust: 'data', template: get_icon('xml')},
{id: 'pdf', header: 'PDF', adjust: 'data', template: get_icon('pdf')},
{id: 'email', header: '', adjust: 'data', template: get_icon('email')}
{id: 'email', header: '@', adjust: 'data', template: get_icon('email')}
]
@ -290,7 +290,7 @@ var grid_bank_invoice_pay_cols = [
{id: 'pdf', header: 'PDF', adjust: 'data', template: get_icon('pdf')},
//~ {id: 'ods', header: 'ODS', adjust: 'data', template: get_icon('table')},
//~ {id: 'zip', header: 'ZIP', adjust: 'data', template: get_icon('zip')},
{id: 'email', header: '', adjust: 'data', template: get_icon('email')}
{id: 'email', header: '@', adjust: 'data', template: get_icon('email')}
]

View File

@ -1,5 +1,5 @@
//~ Empresa Libre
//~ Copyright (C) 2016-2018 Mauricio Baeza Servin (web@correolibre.net)
//~ Copyright (C) 2016-2018 Mauricio Baeza Servin (publico@cuates.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
@ -679,7 +679,7 @@ var grid_preinvoices_cols = [
{id: "cliente", header: ["Razón Social", {content: "selectFilter"}],
fillspace:true, sort:"string"},
{id: 'pdf', header: 'PDF', adjust: 'data', template: get_icon('pdf')},
{id: 'email', header: '', adjust: 'data', template: get_icon('email')}
{id: 'email', header: '@', adjust: 'data', template: get_icon('email')}
]
@ -936,6 +936,36 @@ var grid_cols_carta_mercancias = [
]
var opt_carta_tipo_permiso_sct = [
{id: 'TPAF01', value: '[TPAF01] Autotransporte Federal de carga general.'},
{id: 'TPAF02', value: '[TPAF02] Transporte privado de carga.'},
{id: 'TPAF03', value: '[TPAF03] Autotransporte Federal de Carga Especializada de materiales y residuos peligrosos.'},
{id: 'TPAF04', value: '[TPAF04] Transporte de automóviles sin rodar en vehículo tipo góndola.'},
{id: 'TPAF05', value: '[TPAF05] Transporte de carga de gran peso y/o volumen de hasta 90 toneladas.'},
{id: 'TPAF06', value: '[TPAF06] Transporte de carga especializada de gran peso y/o volumen de más 90 toneladas.'},
{id: 'TPAF07', value: '[TPAF07] Transporte Privado de materiales y residuos peligrosos.'},
{id: 'TPAF08', value: '[TPAF08] Autotransporte internacional de carga de largo recorrido.'},
{id: 'TPAF09', value: '[TPAF09] Autotransporte internacional de carga especializada de materiales y residuos peligrosos de largo recorrido.'},
{id: 'TPAF10', value: '[TPAF10] Autotransporte Federal de Carga General cuyo ámbito de aplicación comprende la franja fronteriza con Estados Unidos.'},
{id: 'TPAF11', value: '[TPAF11] Autotransporte Federal de Carga Especializada cuyo ámbito de aplicación comprende la franja fronteriza con Estados Unidos.'},
{id: 'TPAF12', value: '[TPAF12] Servicio auxiliar de arrastre en las vías generales de comunicación.'},
{id: 'TPAF13', value: '[TPAF13] Servicio auxiliar de servicios de arrastre, arrastre y salvamento, y depósito de vehículos en las vías generales de comunicación.'},
{id: 'TPAF14', value: '[TPAF14] Servicio de paquetería y mensajería en las vías generales de comunicación.'},
{id: 'TPAF15', value: '[TPAF15] Transporte especial para el tránsito de grúas industriales con peso máximo de 90 toneladas.'},
{id: 'TPAF16', value: '[TPAF16] Servicio federal para empresas arrendadoras servicio público federal.'},
{id: 'TPAF17', value: '[TPAF17] Empresas trasladistas de vehículos nuevos.'},
{id: 'TPAF18', value: '[TPAF18] Empresas fabricantes o distribuidoras de vehículos nuevos.'},
{id: 'TPAF19', value: '[TPAF19] Autorización expresa para circular en los caminos y puentes de jurisdicción federal con configuraciones de tractocamión doblemente articulado.'},
{id: 'TPAF20', value: '[TPAF20] Autotransporte Federal de Carga Especializada de fondos y valores.'},
{id: 'TPTM01', value: '[TPTM01] Permiso temporal para navegación de cabotaje'},
{id: 'TPTA01', value: '[TPTA01] Concesión y/o autorización para el servicio regular nacional y/o internacional para empresas mexicanas'},
{id: 'TPTA02', value: '[TPTA02] Permiso para el servicio aéreo regular de empresas extranjeras'},
{id: 'TPTA03', value: '[TPTA03] Permiso para el servicio nacional e internacional no regular de fletamento'},
{id: 'TPTA04', value: '[TPTA04] Permiso para el servicio nacional e internacional no regular de taxi aéreo'},
{id: 'TPXX00', value: '[TPXX00] Permiso no contemplado en el catálogo.'}
]
var opt_config_auto = [
{id: '', value: ''},
{id: 'VL', value: '[VL] Vehículo ligero de carga (2 llantas en el eje delantero y 2 llantas en el eje trasero)'},
@ -1019,7 +1049,7 @@ var opt_carta_aseguradoras = [
var grid_cols_carta_autotransporte = [
{id: 'id', header: 'ID', hidden: true},
{id: 'PermSCT', header: 'Tipo Permiso SCT', editor: 'text', fillspace: 1},
{id: 'PermSCT', header: 'Tipo Permiso SCT', editor: 'select', options: opt_carta_tipo_permiso_sct, fillspace: 1},
{id: 'NumPermisoSCT', header: 'Número Permiso SCT', editor: 'text', fillspace: 1},
{id: 'ConfigVehicular', header: 'Clave Autotransporte', editor: 'select', options: opt_config_auto, fillspace: 1},
{id: 'PlacaVM', header: 'Placa', editor: 'text', fillspace: 1},