forked from elmau/empresa-libre
449 lines
12 KiB
JavaScript
449 lines
12 KiB
JavaScript
var msg = ''
|
|
|
|
|
|
var controllers = {
|
|
init: function(){
|
|
//~ Admin
|
|
$$('menu_user').attachEvent('onMenuItemClick', menu_user_click)
|
|
$$('multi_admin').attachEvent('onViewChange', multi_admin_change)
|
|
//~ Emisor
|
|
$$('cmd_save_emisor').attachEvent('onItemClick', cmd_save_emisor_click)
|
|
$$('emisor_cp').attachEvent('onKeyPress', emisor_postal_code_key_press)
|
|
$$('emisor_cp').attachEvent('onTimedKeyPress', emisor_postal_code_key_up)
|
|
$$('chk_escuela').attachEvent('onChange', chk_escuela_change)
|
|
$$('chk_ong').attachEvent('onChange', chk_ong_change)
|
|
$$('cmd_subir_certificado').attachEvent('onItemClick', cmd_subir_certificado_click)
|
|
$$('up_cert').attachEvent('onUploadComplete', up_cert_upload_complete)
|
|
$$('cmd_agregar_serie').attachEvent('onItemClick', cmd_agregar_serie_click)
|
|
$$('grid_folios').attachEvent('onItemClick', grid_folios_click)
|
|
}
|
|
}
|
|
|
|
|
|
function menu_user_click(id, e, node){
|
|
if (id == 1){
|
|
window.location = '/logout'
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
function cmd_home_click(){
|
|
window.location = '/main'
|
|
}
|
|
|
|
|
|
function cmd_save_emisor_click(){
|
|
var valid_cp = false
|
|
var form = $$('form_emisor')
|
|
|
|
if (!form.validate()){
|
|
msg = 'Valores inválidos'
|
|
msg_error(msg)
|
|
return
|
|
}
|
|
|
|
var values = form.getValues()
|
|
|
|
var ids = $$('lst_emisor_regimen').getSelectedId()
|
|
if(!ids){
|
|
msg = 'Selecciona al menos un Regimen Fiscal'
|
|
msg_error(msg)
|
|
return
|
|
}
|
|
if(values.emisor_cp && values.emisor_cp.length != 5){
|
|
msg = 'Longitud inválida del C.P.'
|
|
msg_error(msg)
|
|
return
|
|
}
|
|
if(values.emisor_cp2 && values.emisor_cp2.length != 5){
|
|
msg = 'Longitud inválida del C.P. de Expedición'
|
|
msg_error(msg)
|
|
return
|
|
}else if(values.emisor_cp2){
|
|
webix.ajax().sync().get('/values/cp', {cp: values.emisor_cp2}, {
|
|
error: function(text, data, xhr) {
|
|
msg = 'Error al consultar el C.P. de Expedición'
|
|
msg_error(msg)
|
|
},
|
|
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{
|
|
valid_cp = true
|
|
}
|
|
}
|
|
})
|
|
}
|
|
if(!valid_cp){
|
|
return
|
|
}
|
|
|
|
if(values.es_ong){
|
|
if(!values.ong_autorizacion){
|
|
msg = 'Si es ONG, el Número de Autorización del SAT es requerido'
|
|
msg_error(msg)
|
|
return
|
|
}
|
|
if(!values.ong_fecha){
|
|
msg = 'Si es ONG, la Fecha de Autorización del SAT es requerida'
|
|
msg_error(msg)
|
|
return
|
|
}
|
|
if(!values.ong_fecha_dof){
|
|
msg = 'Si es ONG, la Fecha de Publicación en DOF es requerida'
|
|
msg_error(msg)
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
values['regimenes'] = ids
|
|
webix.ajax().post('/emisor', values, {
|
|
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_sucess('Emisor guardado correctamente')
|
|
}else{
|
|
msg_error(values.msg)
|
|
}
|
|
}
|
|
})
|
|
|
|
}
|
|
|
|
|
|
function get_emisor(){
|
|
var form = $$('form_emisor')
|
|
|
|
webix.ajax().get("/emisor", {}, {
|
|
error: function(text, data, xhr) {
|
|
msg = 'Error al consultar'
|
|
msg_error(msg)
|
|
},
|
|
success: function(text, data, xhr) {
|
|
var values = data.json()
|
|
if (values.ok){
|
|
var emisor = values.row.emisor
|
|
$$('lst_emisor_regimen').parse(values.row.regimenes)
|
|
form.setValues(emisor, true)
|
|
$$('lst_emisor_regimen').select(emisor.regimenes)
|
|
}else{
|
|
msg_error(values.msg)
|
|
}
|
|
}
|
|
})
|
|
|
|
}
|
|
|
|
|
|
function get_certificado(){
|
|
var form = $$('form_cert')
|
|
|
|
webix.ajax().get("/values/cert", {}, {
|
|
error: function(text, data, xhr) {
|
|
msg = 'Error al consultar'
|
|
msg_error(msg)
|
|
},
|
|
success: function(text, data, xhr) {
|
|
var values = data.json()
|
|
form.setValues(values)
|
|
}
|
|
})
|
|
|
|
}
|
|
|
|
|
|
function get_table_folios(){
|
|
webix.ajax().get("/folios", {}, {
|
|
error: function(text, data, xhr) {
|
|
msg = 'Error al consultar'
|
|
msg_error(msg)
|
|
},
|
|
success: function(text, data, xhr) {
|
|
var values = data.json()
|
|
$$('grid_folios').parse(values)
|
|
}
|
|
})
|
|
|
|
}
|
|
|
|
|
|
function multi_admin_change(prevID, nextID){
|
|
//~ webix.message(nextID)
|
|
if(nextID == 'app_emisor'){
|
|
$$('tab_emisor').setValue('Datos Fiscales')
|
|
get_emisor()
|
|
get_certificado()
|
|
return
|
|
}
|
|
|
|
if(nextID == 'app_folios'){
|
|
get_table_folios()
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
function emisor_postal_code_key_up(){
|
|
var value = this.getValue()
|
|
|
|
if( value.length == 5 ){
|
|
webix.ajax().get('/values/cp', {cp: value}, {
|
|
error: function(text, data, xhr) {
|
|
msg = 'Error al consultar el C.P.'
|
|
msg_error(msg)
|
|
},
|
|
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 {
|
|
$$('form_emisor').setValues({
|
|
emisor_cp2: value,
|
|
emisor_estado: values.estado,
|
|
emisor_municipio: values.municipio,
|
|
emisor_colonia: ''}, true)
|
|
$$('emisor_colonia').define('suggest', [])
|
|
if (webix.isArray(values.colonia)){
|
|
$$('emisor_colonia').define('suggest', values.colonia)
|
|
}else{
|
|
$$('form_emisor').setValues(
|
|
{emisor_colonia: values.colonia}, true)
|
|
}
|
|
$$('emisor_colonia').refresh()
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
|
|
function emisor_postal_code_key_press(code, e){
|
|
var data = [8, 9, 37, 39, 46]
|
|
if ( data.indexOf(code) >= 0 ){
|
|
return true;
|
|
}
|
|
|
|
if ( code < 48 || code > 57){
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
function chk_escuela_change(new_value, old_value){
|
|
var value = Boolean(new_value)
|
|
if (value){
|
|
$$('cmd_niveles').enable()
|
|
} else {
|
|
$$('cmd_niveles').disable()
|
|
}
|
|
}
|
|
|
|
|
|
function chk_ong_change(new_value, old_value){
|
|
var value = Boolean(new_value)
|
|
if (value){
|
|
$$('ong_autorizacion').enable()
|
|
$$('ong_fecha').enable()
|
|
$$('ong_fecha_dof').enable()
|
|
} else {
|
|
$$('ong_autorizacion').disable()
|
|
$$('ong_fecha').disable()
|
|
$$('ong_fecha_dof').disable()
|
|
}
|
|
}
|
|
|
|
|
|
function cmd_subir_certificado_click(){
|
|
var form = $$('form_upload')
|
|
|
|
if (!form.validate()){
|
|
msg = 'Valores inválidos'
|
|
msg_error(msg)
|
|
return
|
|
}
|
|
|
|
var values = form.getValues()
|
|
|
|
if(!values.contra.trim()){
|
|
msg = 'La contraseña no puede estar vacía'
|
|
msg_error(msg)
|
|
return
|
|
}
|
|
|
|
if($$('lst_cert').count() < 2){
|
|
msg = 'Selecciona al menos dos archivos: CER y KEY del certificado.'
|
|
msg_error(msg)
|
|
return
|
|
}
|
|
|
|
if($$('lst_cert').count() > 2){
|
|
msg = 'Selecciona solo dos archivos: CER y KEY del certificado.'
|
|
msg_error(msg)
|
|
return
|
|
}
|
|
|
|
var fo1 = $$('up_cert').files.getItem($$('up_cert').files.getFirstId())
|
|
var fo2 = $$('up_cert').files.getItem($$('up_cert').files.getLastId())
|
|
|
|
var ext = ['key', 'cer']
|
|
if(ext.indexOf(fo1.type.toLowerCase()) == -1 || ext.indexOf(fo2.type.toLowerCase()) == -1){
|
|
msg = 'Archivos inválidos, se requiere un archivo CER y un KEY.'
|
|
msg_error(msg)
|
|
return
|
|
}
|
|
|
|
if(fo1.type == fo2.type && fo1.size == fo2.size){
|
|
msg = 'Selecciona archivos diferentes: un archivo CER y un KEY.'
|
|
msg_error(msg)
|
|
return
|
|
}
|
|
|
|
var rfc = $$('form_cert').getValues()['cert_rfc']
|
|
if(rfc){
|
|
msg = 'Ya existe un certificado guardado<BR><BR>¿Deseas reemplazarlo?'
|
|
webix.confirm({
|
|
title: 'Certificado Existente',
|
|
ok: 'Si',
|
|
cancel: 'No',
|
|
type: 'confirm-error',
|
|
text: msg,
|
|
callback:function(result){
|
|
if(result){
|
|
$$('up_cert').send()
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
|
|
function up_cert_upload_complete(response){
|
|
if(response.status != 'server'){
|
|
msg = 'Ocurrio un error al subir los archivos'
|
|
msg_error(msg)
|
|
return
|
|
}
|
|
|
|
msg = 'Archivos subidos correctamente. Esperando validación'
|
|
msg_sucess(msg)
|
|
|
|
var values = $$('form_upload').getValues()
|
|
$$('form_upload').setValues({})
|
|
$$('up_cert').files.data.clearAll()
|
|
|
|
webix.ajax().post('/values/cert', values, {
|
|
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){
|
|
$$('form_cert').setValues(values.data)
|
|
msg_sucess(values.msg)
|
|
}else{
|
|
msg_error(values.msg)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
|
|
function cmd_agregar_serie_click(){
|
|
var form = $$('form_folios')
|
|
var grid = $$('grid_folios')
|
|
|
|
if (!form.validate()){
|
|
msg = 'Valores inválidos'
|
|
msg_error(msg)
|
|
return
|
|
}
|
|
|
|
var values = form.getValues()
|
|
|
|
var reg = /^[a-z]+$/i
|
|
if(!reg.test(values.folio_serie)){
|
|
msg = 'Introduce una serie válida. Solo letras.'
|
|
msg_error(msg)
|
|
return
|
|
}
|
|
|
|
var pre = '1'
|
|
if(grid.count() > 0){
|
|
pre = ''
|
|
}
|
|
|
|
var usarcon = ''
|
|
if(values.folio_usarcon != 'S'){
|
|
usarcon = values.folio_usarcon
|
|
}
|
|
|
|
var values = {
|
|
serie: values.folio_serie.trim().toUpperCase(),
|
|
inicio: values.folio_inicio,
|
|
usarcon: usarcon,
|
|
default: pre,
|
|
}
|
|
|
|
webix.ajax().post('/folios', values, {
|
|
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){
|
|
form.setValues(
|
|
{folio_serie: '', folio_inicio: 1, folio_usarcon: 'S'})
|
|
grid.add(values.row)
|
|
msg = 'Serie agregada correctamente'
|
|
msg_sucess(msg)
|
|
}else{
|
|
msg_error(values.msg)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
|
|
function grid_folios_click(id, e, node){
|
|
if(id.column != 'delete'){
|
|
return
|
|
}
|
|
|
|
msg = '¿Estás seguro de borrar esta serie?<BR><BR>ESTA ACCIÓN NO SE PUEDE DESHACER'
|
|
webix.confirm({
|
|
title: 'Borrar Serie',
|
|
ok: 'Si',
|
|
cancel: 'No',
|
|
type: 'confirm-error',
|
|
text: msg,
|
|
callback:function(result){
|
|
if(result){
|
|
webix.ajax().del('/folios', {id: id.row}, function(text, xml, xhr){
|
|
msg = 'Serie eliminada correctamente'
|
|
if(xhr.status == 200){
|
|
$$('grid_folios').remove(id.row)
|
|
msg_sucess(msg)
|
|
}else{
|
|
msg = 'No se pudo eliminar'
|
|
msg_error(msg)
|
|
}
|
|
})
|
|
|
|
|
|
|
|
}
|
|
}
|
|
})
|
|
}
|