PDF de donativo

This commit is contained in:
Mauricio Baeza 2017-11-25 20:26:15 -06:00
parent 010ea37542
commit 8d878e3731
12 changed files with 128 additions and 95 deletions

View File

@ -822,6 +822,14 @@ class LIBO(object):
image.Anchor = self._set_cell('{timbre.cbb}') image.Anchor = self._set_cell('{timbre.cbb}')
return return
def _donataria(self, data):
if not data:
return
for k, v in data.items():
self._set_cell('{donataria.%s}' % k, v)
return
def _render(self, data): def _render(self, data):
self._set_search() self._set_search()
self._es_pre = data.pop('es_pre', False) self._es_pre = data.pop('es_pre', False)
@ -831,6 +839,7 @@ class LIBO(object):
self._conceptos(data['conceptos']) self._conceptos(data['conceptos'])
self._totales(data['totales']) self._totales(data['totales'])
self._timbre(data['timbre']) self._timbre(data['timbre'])
self._donataria(data['donataria'])
self._cancelado(data['cancelada']) self._cancelado(data['cancelada'])
self._clean() self._clean()
return return
@ -856,14 +865,19 @@ class LIBO(object):
return self._read(path) return self._read(path)
def to_pdf(data): def to_pdf(data, emisor_rfc):
rfc = data['emisor']['rfc'] rfc = data['emisor']['rfc']
if DEBUG:
rfc = emisor_rfc
version = data['comprobante']['version'] version = data['comprobante']['version']
if APP_LIBO: if APP_LIBO:
app = LIBO() app = LIBO()
if app.is_running: if app.is_running:
name = '{}_{}.ods'.format(rfc, version) donativo = ''
if data['donativo']:
donativo = '_donativo'
name = '{}_{}{}.ods'.format(rfc.lower(), version, donativo)
path = get_template_ods(name) path = get_template_ods(name)
if path: if path:
return app.pdf(path, data) return app.pdf(path, data)
@ -1099,8 +1113,18 @@ def _timbre(doc, version, values):
return data return data
def _donataria(doc, version):
node = doc.find('{}Complemento/{}Donatarias'.format(
PRE[version], PRE['DONATARIA']))
if node is None:
return {}
data = CaseInsensitiveDict(node.attrib.copy())
return data
def get_data_from_xml(invoice, values): def get_data_from_xml(invoice, values):
data = {'cancelada': invoice.cancelada} data = {'cancelada': invoice.cancelada, 'donativo': invoice.donativo}
doc = parse_xml(invoice.xml) doc = parse_xml(invoice.xml)
data['comprobante'] = _comprobante(doc, values) data['comprobante'] = _comprobante(doc, values)
version = data['comprobante']['version'] version = data['comprobante']['version']
@ -1108,6 +1132,7 @@ def get_data_from_xml(invoice, values):
data['receptor'] = _receptor(doc, version, values) data['receptor'] = _receptor(doc, version, values)
data['conceptos'] = _conceptos(doc, version) data['conceptos'] = _conceptos(doc, version)
data['totales'] = _totales(doc, data['comprobante'], version) data['totales'] = _totales(doc, data['comprobante'], version)
data['donataria'] = _donataria(doc, version)
options = { options = {
'rfc_emisor': data['emisor']['rfc'], 'rfc_emisor': data['emisor']['rfc'],
@ -1217,7 +1242,7 @@ def upload_file(rfc, opt, file_obj):
msg = 'Extensión de archivo incorrecta, selecciona un archivo ODS' msg = 'Extensión de archivo incorrecta, selecciona un archivo ODS'
return {'status': 'server', 'name': msg, 'ok': False} return {'status': 'server', 'name': msg, 'ok': False}
name = '{}_3.3_donataria.ods'.format(rfc.lower()) name = '{}_3.3_donativo.ods'.format(rfc.lower())
path = _join(PATH_MEDIA, 'templates', name) path = _join(PATH_MEDIA, 'templates', name)
if save_file(path, file_obj.file.read()): if save_file(path, file_obj.file.read()):

View File

@ -153,7 +153,8 @@ class Configuracion(BaseModel):
fields = ( fields = (
'txt_plantilla_factura_32', 'txt_plantilla_factura_32',
'txt_plantilla_factura_33', 'txt_plantilla_factura_33',
'txt_plantilla_factura_33j' 'txt_plantilla_factura_33j',
'txt_plantilla_donataria',
) )
data = (Configuracion data = (Configuracion
.select() .select()
@ -1928,6 +1929,7 @@ class Facturas(BaseModel):
@classmethod @classmethod
def get_pdf(cls, id, rfc): def get_pdf(cls, id, rfc):
emisor = Emisor.select()[0]
obj = Facturas.get(Facturas.id==id) obj = Facturas.get(Facturas.id==id)
name = '{}{}_{}.pdf'.format(obj.serie, obj.folio, obj.cliente.rfc) name = '{}{}_{}.pdf'.format(obj.serie, obj.folio, obj.cliente.rfc)
if obj.uuid is None: if obj.uuid is None:
@ -1935,7 +1937,7 @@ class Facturas(BaseModel):
values = cls._get_not_in_xml(cls, obj) values = cls._get_not_in_xml(cls, obj)
data = util.get_data_from_xml(obj, values) data = util.get_data_from_xml(obj, values)
doc = util.to_pdf(data) doc = util.to_pdf(data, emisor.rfc)
return doc, name return doc, name
@classmethod @classmethod

View File

@ -84,6 +84,7 @@ PRE = {
'3.2': '{http://www.sat.gob.mx/cfd/3}', '3.2': '{http://www.sat.gob.mx/cfd/3}',
'3.3': '{http://www.sat.gob.mx/cfd/3}', '3.3': '{http://www.sat.gob.mx/cfd/3}',
'TIMBRE': '{http://www.sat.gob.mx/TimbreFiscalDigital}', 'TIMBRE': '{http://www.sat.gob.mx/TimbreFiscalDigital}',
'DONATARIA': '{http://www.sat.gob.mx/donat}',
'NOMINA': { 'NOMINA': {
'1.1': '{http://www.sat.gob.mx/nomina}', '1.1': '{http://www.sat.gob.mx/nomina}',
'1.2': '{http://www.sat.gob.mx/nomina12}', '1.2': '{http://www.sat.gob.mx/nomina12}',

View File

@ -56,6 +56,14 @@
.webix_success div { .webix_success div {
background-color: #00a65a !important; background-color: #00a65a !important;
font-size: 1vw; font-weight: bold;
font-size: 1.5vw;
color: white;
}
.webix_error div {
background-color: #DF0101 !important;
font-weight: bold;
font-size: 1.5vw;
color: white; color: white;
} }

View File

@ -136,7 +136,7 @@ function cmd_save_emisor_click(){
success:function(text, data, XmlHttpRequest){ success:function(text, data, XmlHttpRequest){
var values = data.json() var values = data.json()
if(values.ok){ if(values.ok){
msg_sucess('Emisor guardado correctamente') msg_ok('Emisor guardado correctamente')
}else{ }else{
msg_error(values.msg) msg_error(values.msg)
} }
@ -492,7 +492,7 @@ function up_cert_upload_complete(response){
} }
msg = 'Archivos subidos correctamente. Esperando validación' msg = 'Archivos subidos correctamente. Esperando validación'
msg_sucess(msg) msg_ok(msg)
var values = $$('form_upload').getValues() var values = $$('form_upload').getValues()
$$('form_upload').setValues({}) $$('form_upload').setValues({})
@ -507,7 +507,7 @@ function up_cert_upload_complete(response){
var values = data.json() var values = data.json()
if(values.ok){ if(values.ok){
$$('form_cert').setValues(values.data) $$('form_cert').setValues(values.data)
msg_sucess(values.msg) msg_ok(values.msg)
}else{ }else{
msg_error(values.msg) msg_error(values.msg)
} }
@ -564,7 +564,7 @@ function cmd_agregar_serie_click(){
{folio_serie: '', folio_inicio: 1, folio_usarcon: 'S'}) {folio_serie: '', folio_inicio: 1, folio_usarcon: 'S'})
grid.add(values.row) grid.add(values.row)
msg = 'Serie agregada correctamente' msg = 'Serie agregada correctamente'
msg_sucess(msg) msg_ok(msg)
}else{ }else{
msg_error(values.msg) msg_error(values.msg)
} }
@ -591,7 +591,7 @@ function grid_folios_click(id, e, node){
msg = 'Serie eliminada correctamente' msg = 'Serie eliminada correctamente'
if(xhr.status == 200){ if(xhr.status == 200){
$$('grid_folios').remove(id.row) $$('grid_folios').remove(id.row)
msg_sucess(msg) msg_ok(msg)
}else{ }else{
msg = 'No se pudo eliminar' msg = 'No se pudo eliminar'
msg_error(msg) msg_error(msg)
@ -658,7 +658,7 @@ function cmd_probar_correo_click(){
if (values.ok){ if (values.ok){
msg = 'Correo de prueba enviado correctamente. Ya puedes \ msg = 'Correo de prueba enviado correctamente. Ya puedes \
guardar esta configuración' guardar esta configuración'
msg_sucess(msg) msg_ok(msg)
}else{ }else{
msg_error(values.msg) msg_error(values.msg)
} }
@ -679,7 +679,7 @@ function save_config_mail(values){
var values = data.json(); var values = data.json();
if (values.ok){ if (values.ok){
msg = 'Configuración guardada correctamente' msg = 'Configuración guardada correctamente'
msg_sucess(msg) msg_ok(msg)
}else{ }else{
msg_error(values.msg) msg_error(values.msg)
} }
@ -732,7 +732,7 @@ function emisor_logo_click(id, e){
$$('up_emisor_logo').attachEvent('onUploadComplete', function(response){ $$('up_emisor_logo').attachEvent('onUploadComplete', function(response){
$$('emisor_logo').setValue(response.name) $$('emisor_logo').setValue(response.name)
msg_sucess('Logotipo cargado correctamente') msg_ok('Logotipo cargado correctamente')
}) })
} }
@ -768,7 +768,7 @@ function txt_plantilla_factura_33_click(e){
$$('up_template').attachEvent('onUploadComplete', function(response){ $$('up_template').attachEvent('onUploadComplete', function(response){
if(response.ok){ if(response.ok){
$$('txt_plantilla_factura_33').setValue(response.name) $$('txt_plantilla_factura_33').setValue(response.name)
msg_sucess('Plantilla cargada correctamente') msg_ok('Plantilla cargada correctamente')
}else{ }else{
msg_error(response.name) msg_error(response.name)
} }
@ -806,7 +806,7 @@ function txt_plantilla_factura_32_click(e){
$$('up_template').attachEvent('onUploadComplete', function(response){ $$('up_template').attachEvent('onUploadComplete', function(response){
if(response.ok){ if(response.ok){
$$('txt_plantilla_factura_32').setValue(response.name) $$('txt_plantilla_factura_32').setValue(response.name)
msg_sucess('Plantilla cargada correctamente') msg_ok('Plantilla cargada correctamente')
}else{ }else{
msg_error(response.name) msg_error(response.name)
} }
@ -844,7 +844,7 @@ function txt_plantilla_factura_33j_click(e){
$$('up_template').attachEvent('onUploadComplete', function(response){ $$('up_template').attachEvent('onUploadComplete', function(response){
if(response.ok){ if(response.ok){
$$('txt_plantilla_factura_33j').setValue(response.name) $$('txt_plantilla_factura_33j').setValue(response.name)
msg_sucess('Plantilla cargada correctamente') msg_ok('Plantilla cargada correctamente')
}else{ }else{
msg_error(response.name) msg_error(response.name)
} }
@ -882,7 +882,7 @@ function txt_plantilla_donataria_click(e){
$$('up_template').attachEvent('onUploadComplete', function(response){ $$('up_template').attachEvent('onUploadComplete', function(response){
if(response.ok){ if(response.ok){
$$('txt_plantilla_donataria').setValue(response.name) $$('txt_plantilla_donataria').setValue(response.name)
msg_sucess('Plantilla cargada correctamente') msg_ok('Plantilla cargada correctamente')
}else{ }else{
msg_error(response.name) msg_error(response.name)
} }
@ -1188,10 +1188,10 @@ function borrar_impuesto(row){
msg = 'Impuesto eliminado correctamente' msg = 'Impuesto eliminado correctamente'
if(xhr.status == 200){ if(xhr.status == 200){
grid.remove(row) grid.remove(row)
msg_sucess(msg) msg_ok(msg)
}else{ }else{
msg = 'Impuesto en uso, no se pudo eliminar.' msg = 'Impuesto en uso, no se pudo eliminar.'
msg_sucess(msg) msg_error(msg)
} }
}) })
} }
@ -1226,7 +1226,7 @@ function eliminar_cuenta_banco(id){
msg = 'Cuenta eliminada correctamente' msg = 'Cuenta eliminada correctamente'
if(xhr.status == 200){ if(xhr.status == 200){
grid.remove(id) grid.remove(id)
msg_sucess(msg) msg_ok(msg)
}else{ }else{
msg = 'No se pudo eliminar' msg = 'No se pudo eliminar'
msg_error(msg) msg_error(msg)

View File

@ -566,7 +566,7 @@ function cancelar_movimiento(id){
if(xhr.status == 200){ if(xhr.status == 200){
get_estado_cuenta() get_estado_cuenta()
get_saldo_cuenta() get_saldo_cuenta()
msg_sucess('Movimiento cancelado correctamente') msg_ok('Movimiento cancelado correctamente')
}else{ }else{
msg_error('No se pudo eliminar') msg_error('No se pudo eliminar')
} }
@ -590,12 +590,12 @@ function cmd_cancelar_movimiento_click(){
var msg = '¿Estás seguro de cancelar el movimiento seleccionado?' var msg = '¿Estás seguro de cancelar el movimiento seleccionado?'
msg += '<BR><BR>ESTA ACCIÓN NO SE PUEDE DESHACER<BR><BR>' msg += '<BR><BR>ESTA ACCIÓN NO SE PUEDE DESHACER<BR><BR>'
webix.confirm({ webix.confirm({
title:'Cancelar Movimiento', title: 'Cancelar Movimiento',
ok:'Si', ok: 'Si',
cancel:'No', cancel: 'No',
type:'confirm-error', type: 'confirm-error',
text:msg, text: msg,
callback:function(result){ callback: function(result){
if (result){ if (result){
cancelar_movimiento(row['id']) cancelar_movimiento(row['id'])
} }

View File

@ -150,7 +150,7 @@ function delete_invoice(id){
webix.ajax().del('/invoices', {id: id}, function(text, xml, xhr){ webix.ajax().del('/invoices', {id: id}, function(text, xml, xhr){
if(xhr.status == 200){ if(xhr.status == 200){
gi.remove(id) gi.remove(id)
msg_sucess('Factura eliminada correctamente') msg_ok('Factura eliminada correctamente')
}else{ }else{
msg_error('No se pudo eliminar') msg_error('No se pudo eliminar')
} }
@ -340,7 +340,7 @@ function send_anticipo_egreso(id){
webix.ajax().get('/values/anticipoegreso', {id: id}, function(text, data){ webix.ajax().get('/values/anticipoegreso', {id: id}, function(text, data){
var values = data.json() var values = data.json()
if(values.ok){ if(values.ok){
msg_sucess(values.msg) msg_ok(values.msg)
gi.add(values.row) gi.add(values.row)
}else{ }else{
webix.alert({ webix.alert({
@ -377,7 +377,7 @@ function send_timbrar(id){
webix.ajax().get('/values/timbrar', {id: id}, function(text, data){ webix.ajax().get('/values/timbrar', {id: id}, function(text, data){
var values = data.json() var values = data.json()
if(values.ok){ if(values.ok){
msg_sucess(values.msg) msg_ok(values.msg)
gi.updateItem(id, values.row) gi.updateItem(id, values.row)
if(values.anticipo){ if(values.anticipo){
//~ generar_anticipo_egreso(id) //~ generar_anticipo_egreso(id)
@ -407,7 +407,7 @@ function save_invoice(data){
success:function(text, data, XmlHttpRequest){ success:function(text, data, XmlHttpRequest){
values = data.json(); values = data.json();
if(values.ok){ if(values.ok){
msg_sucess('Factura guardada correctamente. Enviando a timbrar') msg_ok('Factura guardada correctamente. Enviando a timbrar')
update_grid_invoices(values) update_grid_invoices(values)
gi.select(values.row['id'], false) gi.select(values.row['id'], false)
send_timbrar(values.row['id']) send_timbrar(values.row['id'])
@ -442,7 +442,7 @@ function save_preinvoice(data){
success:function(text, data, XmlHttpRequest){ success:function(text, data, XmlHttpRequest){
values = data.json(); values = data.json();
if(values.ok){ if(values.ok){
msg_sucess('Pre Factura generada correctamente') msg_ok('Pre Factura generada correctamente')
result = true result = true
}else{ }else{
msg_error(values.msg) msg_error(values.msg)
@ -530,7 +530,7 @@ function cmd_timbrar_click(id, e, node){
var form = this.getFormView(); var form = this.getFormView();
if(!form.validate()) { if(!form.validate()) {
webix.message({type:'error', text:'Valores inválidos'}) msg_error('Valores inválidos')
return return
} }
@ -573,7 +573,7 @@ function search_client_by_id(id){
var msg = '' var msg = ''
webix.ajax().get('/values/client', {'id': id}, { webix.ajax().get('/values/client', {'id': id}, {
error: function(text, data, xhr) { error: function(text, data, xhr) {
webix.message({type: 'error', text: 'Error al consultar'}) msg_error('Error al consultar')
}, },
success: function(text, data, xhr){ success: function(text, data, xhr){
var values = data.json() var values = data.json()
@ -581,7 +581,7 @@ function search_client_by_id(id){
set_client(values.row) set_client(values.row)
}else{ }else{
msg = 'No se encontró un cliente con la clave: ' + id msg = 'No se encontró un cliente con la clave: ' + id
webix.message({type:'error', text: msg}) msg_error(msg)
} }
} }
}) })
@ -612,7 +612,7 @@ function search_client_id_key_press(code, e){
if(code == 13 && value.length > 0){ if(code == 13 && value.length > 0){
var id = parseInt(value, 10) var id = parseInt(value, 10)
if (isNaN(id)){ if (isNaN(id)){
webix.message({type:'error', text:'Captura una clave válida'}); msg_error('Captura una clave válida')
}else{ }else{
search_client_by_id(id) search_client_by_id(id)
} }
@ -730,7 +730,7 @@ function search_product_by_id(id){
webix.ajax().get('/values/product', {'id': id}, { webix.ajax().get('/values/product', {'id': id}, {
error: function(text, data, xhr) { error: function(text, data, xhr) {
webix.message({type: 'error', text: 'Error al consultar'}) msg_error('Error al consultar')
}, },
success: function(text, data, xhr){ success: function(text, data, xhr){
var values = data.json() var values = data.json()
@ -738,7 +738,7 @@ function search_product_by_id(id){
set_product(values) set_product(values)
} else { } else {
msg = 'No se encontró un producto con la clave: ' + id msg = 'No se encontró un producto con la clave: ' + id
webix.message({type: 'error', text: msg}) msg_error(msg)
} }
} }
}) })
@ -751,7 +751,7 @@ function search_product_id_key_press(code, e){
if(code == 13 && value.length > 0){ if(code == 13 && value.length > 0){
var id = parseInt(value, 10) var id = parseInt(value, 10)
if (isNaN(id)){ if (isNaN(id)){
webix.message({type: 'error', text: 'Captura una clave válida'}); msg_error('Captura una clave válida')
}else{ }else{
search_product_by_id(id) search_product_by_id(id)
} }
@ -773,7 +773,7 @@ function grid_details_before_edit_stop(state, editor){
if(editor.column == 'descripcion'){ if(editor.column == 'descripcion'){
if(!state.value.trim()){ if(!state.value.trim()){
msg = 'La descripción no puede estar vacía' msg = 'La descripción no puede estar vacía'
webix.message({type:'error', text: msg}) msg_error(msg)
grid.blockEvent() grid.blockEvent()
state.value = state.old state.value = state.old
grid.editCancel() grid.editCancel()
@ -788,7 +788,7 @@ function grid_details_before_edit_stop(state, editor){
var cantidad = parseFloat(state.value) var cantidad = parseFloat(state.value)
if(isNaN(cantidad)){ if(isNaN(cantidad)){
msg = 'La cantidad debe ser un número' msg = 'La cantidad debe ser un número'
webix.message({type:'error', text: msg}) msg_error(msg)
grid.blockEvent() grid.blockEvent()
state.value = state.old state.value = state.old
grid.editCancel() grid.editCancel()
@ -803,7 +803,7 @@ function grid_details_before_edit_stop(state, editor){
var valor_unitario = parseFloat(state.value) var valor_unitario = parseFloat(state.value)
if(isNaN(valor_unitario)){ if(isNaN(valor_unitario)){
msg = 'El valor unitario debe ser un número' msg = 'El valor unitario debe ser un número'
webix.message({type:'error', text: msg}) msg_error(msg)
grid.blockEvent() grid.blockEvent()
state.value = state.old state.value = state.old
grid.editCancel() grid.editCancel()
@ -818,7 +818,7 @@ function grid_details_before_edit_stop(state, editor){
var descuento = parseFloat(state.value) var descuento = parseFloat(state.value)
if(isNaN(descuento)){ if(isNaN(descuento)){
msg = 'El descuento debe ser un número' msg = 'El descuento debe ser un número'
webix.message({type:'error', text: msg}) msg_error(msg)
grid.blockEvent() grid.blockEvent()
state.value = state.old state.value = state.old
grid.editCancel() grid.editCancel()
@ -928,7 +928,7 @@ function enviar_correo(row){
success:function(text, data, XmlHttpRequest){ success:function(text, data, XmlHttpRequest){
values = data.json(); values = data.json();
if(values.ok){ if(values.ok){
msg_sucess(values.msg) msg_ok(values.msg)
}else{ }else{
msg_error(values.msg) msg_error(values.msg)
} }
@ -960,7 +960,7 @@ function send_cancel(id){
webix.ajax().get('/values/cancelinvoice', {id: id}, function(text, data){ webix.ajax().get('/values/cancelinvoice', {id: id}, function(text, data){
var values = data.json() var values = data.json()
if(values.ok){ if(values.ok){
msg_sucess(values.msg) msg_ok(values.msg)
gi.updateItem(id, values.row) gi.updateItem(id, values.row)
}else{ }else{
webix.alert({ webix.alert({
@ -1026,7 +1026,7 @@ function get_invoices(rango){
webix.ajax().get('/invoices', rango, { webix.ajax().get('/invoices', rango, {
error: function(text, data, xhr) { error: function(text, data, xhr) {
webix.message({type: 'error', text: 'Error al consultar'}) msg_error('Error al consultar')
}, },
success: function(text, data, xhr) { success: function(text, data, xhr) {
var values = data.json(); var values = data.json();
@ -1163,7 +1163,7 @@ function get_prefacturas(){
var grid = $$('grid_preinvoices') var grid = $$('grid_preinvoices')
webix.ajax().get('/preinvoices', rango, { webix.ajax().get('/preinvoices', rango, {
error: function(text, data, xhr) { error: function(text, data, xhr) {
webix.message({type: 'error', text: 'Error al consultar'}) msg_error('Error al consultar')
}, },
success: function(text, data, xhr) { success: function(text, data, xhr) {
var values = data.json(); var values = data.json();
@ -1197,7 +1197,7 @@ function delete_preinvoice(id){
webix.ajax().del('/preinvoices', {id: id}, function(text, xml, xhr){ webix.ajax().del('/preinvoices', {id: id}, function(text, xml, xhr){
if(xhr.status == 200){ if(xhr.status == 200){
$$('grid_preinvoices').remove(id) $$('grid_preinvoices').remove(id)
msg_sucess('PreFactura eliminada correctamente') msg_ok('PreFactura eliminada correctamente')
}else{ }else{
msg_error('No se pudo eliminar') msg_error('No se pudo eliminar')
} }
@ -1330,7 +1330,7 @@ function enviar_prefactura(id){
success:function(text, data, XmlHttpRequest){ success:function(text, data, XmlHttpRequest){
values = data.json(); values = data.json();
if(values.ok){ if(values.ok){
msg_sucess(values.msg) msg_ok(values.msg)
}else{ }else{
msg_error(values.msg) msg_error(values.msg)
} }
@ -1382,7 +1382,7 @@ function get_facturas_por_cliente(){
webix.ajax().get('/invoices', filters, { webix.ajax().get('/invoices', filters, {
error: function(text, data, xhr) { error: function(text, data, xhr) {
webix.message({type: 'error', text: 'Error al consultar'}) msg_error('Error al consultar')
}, },
success: function(text, data, xhr) { success: function(text, data, xhr) {
var values = data.json(); var values = data.json();
@ -1449,7 +1449,7 @@ function cmd_limpiar_relacionados_click(){
$$('grid_relacionados').clearAll() $$('grid_relacionados').clearAll()
table_relaciones.clear() table_relaciones.clear()
tipo_relacion = '' tipo_relacion = ''
msg_sucess('Las relaciones han sido eliminadas') msg_ok('Las relaciones han sido eliminadas')
} }
} }
}) })
@ -1474,7 +1474,7 @@ function cmd_guardar_relacionados_click(){
table_relaciones.clear() table_relaciones.clear()
table_relaciones.insert(data) table_relaciones.insert(data)
tipo_relacion = value tipo_relacion = value
msg_sucess('Relaciones guardadas correctamente') msg_ok('Relaciones guardadas correctamente')
} }

View File

@ -98,7 +98,7 @@ function get_uso_cfdi_to_table(){
function get_partners(){ function get_partners(){
webix.ajax().get('/partners', {}, { webix.ajax().get('/partners', {}, {
error: function(text, data, xhr) { error: function(text, data, xhr) {
webix.message({type: 'error', text: 'Error al consultar'}); msg_error('Error al consultar')
}, },
success: function(text, data, xhr) { success: function(text, data, xhr) {
var values = data.json(); var values = data.json();
@ -115,7 +115,7 @@ function get_products(){
var grid = $$('grid_products') var grid = $$('grid_products')
webix.ajax().get('/products', {}, { webix.ajax().get('/products', {}, {
error: function(text, data, xhr) { error: function(text, data, xhr) {
webix.message({type: 'error', text: 'Error al consultar'}) msg_error('Error al consultar')
}, },
success: function(text, data, xhr) { success: function(text, data, xhr) {
var values = data.json(); var values = data.json();
@ -166,7 +166,6 @@ function current_dates(){
function multi_change(prevID, nextID){ function multi_change(prevID, nextID){
//~ webix.message(nextID)
if(nextID == 'app_partners'){ if(nextID == 'app_partners'){
active = $$('multi_partners').getActiveId() active = $$('multi_partners').getActiveId()
if(active == 'partners_home'){ if(active == 'partners_home'){

View File

@ -40,14 +40,14 @@ function cmd_edit_partner_click(id, e, node){
if (row == undefined){ if (row == undefined){
msg = 'Selecciona un Socio de Negocio' msg = 'Selecciona un Socio de Negocio'
webix.message({type:'error', text: msg}) msg_error(msg)
return return
} }
get_condicion_pago() get_condicion_pago()
webix.ajax().get("/partners", {id: row['id']}, { webix.ajax().get("/partners", {id: row['id']}, {
error: function(text, data, xhr) { error: function(text, data, xhr) {
webix.message({type:"error", text: "Error al consultar"}) msg_error()
}, },
success: function(text, data, xhr){ success: function(text, data, xhr){
var values = data.json() var values = data.json()
@ -83,7 +83,7 @@ function cmd_delete_partner_click(id, e, node){
if (row == undefined){ if (row == undefined){
msg = 'Selecciona un Cliente o Proveedor' msg = 'Selecciona un Cliente o Proveedor'
webix.message({type:'error', text: msg}) msg_error(msg)
return return
} }
@ -112,10 +112,10 @@ function delete_partner(id){
var msg = 'Socio eliminado correctamente' var msg = 'Socio eliminado correctamente'
if (xhr.status == 200){ if (xhr.status == 200){
$$('grid_partners').remove(id); $$('grid_partners').remove(id);
webix.message({type: 'success', text: msg}) msg_ok(msg)
} else { } else {
msg = 'No se pudo eliminar. Asegurate de que no tenga documentos relacionados' msg = 'No se pudo eliminar. Asegurate de que no tenga documentos relacionados'
webix.message({type: 'error', text: msg}) msg_error(msg)
} }
}) })
} }
@ -126,7 +126,7 @@ function cmd_save_partner_click(id, e, node){
var form = this.getFormView(); var form = this.getFormView();
if (!form.validate()) { if (!form.validate()) {
webix.message({type: 'error', text: msg}) msg_error(msg)
return return
} }
@ -148,14 +148,14 @@ function cmd_save_partner_click(id, e, node){
webix.ajax().post('/partners', values, { webix.ajax().post('/partners', values, {
error:function(text, data, XmlHttpRequest){ error:function(text, data, XmlHttpRequest){
msg = 'Ocurrio un error, consulta a soporte técnico'; msg = 'Ocurrio un error, consulta a soporte técnico';
webix.message({type:'error', text:msg}); msg_error(msg)
}, },
success:function(text, data, XmlHttpRequest){ success:function(text, data, XmlHttpRequest){
var values = data.json(); var values = data.json();
if (values.ok) { if (values.ok) {
update_grid_partner(values) update_grid_partner(values)
} else { } else {
webix.message({type:'error', text:values.msg}); msg_error(msg)
} }
} }
}) })
@ -173,7 +173,7 @@ function update_grid_partner(values){
$$("grid_partners").updateItem(values.row['id'], values.row) $$("grid_partners").updateItem(values.row['id'], values.row)
} }
$$('multi_partners').setValue('partners_home') $$('multi_partners').setValue('partners_home')
webix.message({type:'success', text: msg}) msg_ok(msg)
} }
@ -193,13 +193,13 @@ function postal_code_key_up(){
if( value.length == 5 ){ if( value.length == 5 ){
webix.ajax().get('/values/cp', {cp: value}, { webix.ajax().get('/values/cp', {cp: value}, {
error: function(text, data, xhr) { error: function(text, data, xhr) {
webix.message({type:'error', text:'Error al consultar el C.P.'}) msg_error('Error al consultar el C.P.')
}, },
success: function(text, data, xhr) { success: function(text, data, xhr) {
var values = data.json(); var values = data.json();
if (values.estado == undefined){ if (values.estado == undefined){
msg = 'No se encontró el C.P., asegurate de que sea correcto' msg = 'No se encontró el C.P., asegurate de que sea correcto'
webix.message({type:'error', text:msg}) msg_error(msg)
} else { } else {
$$('form_partner').setValues({ $$('form_partner').setValues({
estado: values.estado, estado: values.estado,

View File

@ -25,7 +25,7 @@ function cmd_edit_product_click(id, e, node){
var grid = $$('grid_products') var grid = $$('grid_products')
var row = grid.getSelectedItem() var row = grid.getSelectedItem()
if(row == undefined){ if(row == undefined){
webix.message({type: 'error', text: 'Selecciona un Producto'}) msg_error('Selecciona un Producto')
return return
} }
@ -35,7 +35,7 @@ function cmd_edit_product_click(id, e, node){
webix.ajax().get('/products', {id:row['id']}, { webix.ajax().get('/products', {id:row['id']}, {
error: function(text, data, xhr) { error: function(text, data, xhr) {
webix.message({type: 'error', text: 'Error al consultar'}) msg_error()
}, },
success: function(text, data, xhr){ success: function(text, data, xhr){
var values = data.json() var values = data.json()
@ -56,10 +56,10 @@ function delete_product(id){
var msg = 'Producto eliminado correctamente' var msg = 'Producto eliminado correctamente'
if(xhr.status == 200){ if(xhr.status == 200){
$$('grid_products').remove(id) $$('grid_products').remove(id)
webix.message({type:'success', text:msg}) msg_ok(msg)
}else{ }else{
msg = 'No se pudo eliminar' msg = 'No se pudo eliminar'
webix.message({type:'error', text:msg}) msg_error(msg)
} }
}) })
} }
@ -68,7 +68,7 @@ function delete_product(id){
function cmd_delete_product_click(id, e, node){ function cmd_delete_product_click(id, e, node){
var row = $$('grid_products').getSelectedItem() var row = $$('grid_products').getSelectedItem()
if (row == undefined){ if (row == undefined){
webix.message({type:'error', text: 'Selecciona un Producto'}) msg_error('Selecciona un Producto')
return return
} }
@ -117,7 +117,7 @@ function update_grid_products(values){
$$("grid_products").updateItem(values.row['id'], values.row) $$("grid_products").updateItem(values.row['id'], values.row)
} }
$$('multi_products').setValue('products_home') $$('multi_products').setValue('products_home')
webix.message({type: 'success', text: msg}) msg_ok(msg)
} }
@ -126,20 +126,20 @@ function cmd_save_product_click(id, e, node){
var form = this.getFormView() var form = this.getFormView()
if(!form.validate()){ if(!form.validate()){
webix.message({type: 'error', text: 'Valores inválidos'}) msg_error('Valores inválidos')
return return
} }
var rows = $$('grid_product_taxes').getSelectedId(true, true) var rows = $$('grid_product_taxes').getSelectedId(true, true)
if (rows.length == 0){ if (rows.length == 0){
webix.message({type: 'error', text: 'Selecciona un impuesto'}) msg_error('Selecciona un impuesto')
return return
} }
var values = form.getValues(); var values = form.getValues();
if (!validate_sat_key_product(values.clave_sat, false)){ if (!validate_sat_key_product(values.clave_sat, false)){
webix.message({ type:'error', text:'La clave SAT no existe' }) msg_error('La clave SAT no existe')
return return
} }
@ -147,14 +147,14 @@ function cmd_save_product_click(id, e, node){
webix.ajax().sync().post('products', values, { webix.ajax().sync().post('products', values, {
error:function(text, data, XmlHttpRequest){ error:function(text, data, XmlHttpRequest){
msg = 'Ocurrio un error, consulta a soporte técnico' msg = 'Ocurrio un error, consulta a soporte técnico'
webix.message({type: 'error', text: msg}) msg_error(msg)
}, },
success:function(text, data, XmlHttpRequest){ success:function(text, data, XmlHttpRequest){
var values = data.json(); var values = data.json();
if (values.ok) { if (values.ok) {
update_grid_products(values) update_grid_products(values)
}else{ }else{
webix.message({type:'error', text:values.msg}) msg_error(values.msg)
} }
} }
}) })
@ -192,7 +192,7 @@ function chk_automatica_change(new_value, old_value){
function get_new_key(){ function get_new_key(){
webix.ajax().get('/values/newkey', { webix.ajax().get('/values/newkey', {
error: function(text, data, xhr) { error: function(text, data, xhr) {
webix.message({type:'error', text: text}) msg_error(text)
}, },
success: function(text, data, xhr) { success: function(text, data, xhr) {
var values = data.json(); var values = data.json();

View File

@ -56,12 +56,15 @@ function show(nombre, value){
function msg_error(msg){ function msg_error(msg){
if(!msg){
msg = 'Error al consultar'
}
webix.message({type: 'error', text: msg}) webix.message({type: 'error', text: msg})
} }
function msg_sucess(msg){ function msg_ok(msg){
webix.message({type: 'sucess', text: msg}) webix.message({type: 'success', text: msg})
} }
@ -119,7 +122,7 @@ webix.ui.datafilter.rowCount = webix.extend({
function validate_rfc(value){ function validate_rfc(value){
rfc = value.trim().toUpperCase(); rfc = value.trim().toUpperCase();
if ( rfc == ""){ if ( rfc == ""){
webix.message({ type:"error", text:"El RFC no puede estar vacío" }); msg_error('El RFC no puede estar vacío')
return false return false
} }
@ -131,41 +134,41 @@ function validate_rfc(value){
start = 2 start = 2
} }
if (rfc.length != length){ if (rfc.length != length){
webix.message({ type:"error", text:"Longitud incorrecta del RFC" }); msg_error('Longitud incorrecta del RFC')
return false return false
} }
if (tipo_persona < 3 && (rfc == RFC_PUBLICO || rfc == RFC_EXTRANJERO)){ if (tipo_persona < 3 && (rfc == RFC_PUBLICO || rfc == RFC_EXTRANJERO)){
webix.message({ type:"error", text:"RFC incorrecto" }); msg_error('RFC incorrecto')
return false return false
} }
var part = rfc.slice(0, start); var part = rfc.slice(0, start);
var re = new RegExp('[a-z&Ñ]{' + start + '}', 'i'); var re = new RegExp('[a-z&Ñ]{' + start + '}', 'i');
if (!part.match(re)){ if (!part.match(re)){
webix.message({ type:"error", text: "El RFC tiene caractéres inválidos al inicio" }); msg_error('El RFC tiene caractéres inválidos al inicio')
return false return false
} }
part = rfc.slice(-3); part = rfc.slice(-3);
re = new RegExp('[a-z0-9]{3}', 'i'); re = new RegExp('[a-z0-9]{3}', 'i');
if (!part.match(re)){ if (!part.match(re)){
webix.message({ type:"error", text: "El RFC tiene caractéres inválidos al final" }); msg_error('El RFC tiene caractéres inválidos al final')
return false return false
} }
part = rfc.slice(-9, -3); part = rfc.slice(-9, -3);
re = new RegExp('[0-9]{6}', 'i'); re = new RegExp('[0-9]{6}', 'i');
if (!part.match(re)){ if (!part.match(re)){
webix.message({ type:"error", text: "Fecha inválida" }); msg_error('Fecha inválida')
return false return false
} }
var month = parseInt(part.slice(-4, -2)) var month = parseInt(part.slice(-4, -2))
if (month == 0 || month > 12 ){ if (month == 0 || month > 12 ){
webix.message({ type:"error", text: "Fecha inválida" }); msg_error('Fecha inválida')
return false return false
} }
var day = parseInt(part.slice(-2)) var day = parseInt(part.slice(-2))
if (day == 0 || day > 31 ){ if (day == 0 || day > 31 ){
webix.message({ type:"error", text: "Fecha inválida" }); msg_error('Fecha inválida')
return false return false
} }

View File

@ -615,8 +615,3 @@ var app_invoices = {
multi_invoices multi_invoices
], ],
} }