forked from elmau/empresa-libre
150 lines
3.8 KiB
JavaScript
150 lines
3.8 KiB
JavaScript
var PUBLICO = "Público en general";
|
|
var RFC_PUBLICO = "XAXX010101000";
|
|
var RFC_EXTRANJERO = "XEXX010101000";
|
|
var PAIS = "México";
|
|
var DECIMALES = 2;
|
|
|
|
|
|
var db = new loki('data.db');
|
|
var table_config = db.addCollection('config')
|
|
var table_taxes = db.addCollection('taxes')
|
|
var table_pt = db.addCollection('productstaxes')
|
|
var table_totals = db.addCollection('totals', {unique: ['tax']})
|
|
var table_series = db.addCollection('series')
|
|
var table_usocfdi = db.addCollection('usocfdi')
|
|
|
|
|
|
function show(values){
|
|
webix.message(JSON.stringify(values, null, 2))
|
|
}
|
|
|
|
|
|
function msg_error(msg){
|
|
webix.message({type: 'error', text: msg})
|
|
}
|
|
|
|
|
|
function msg_sucess(msg){
|
|
webix.message({type: 'sucess', text: msg})
|
|
}
|
|
|
|
|
|
Number.prototype.round = function(decimals){
|
|
return Number((Math.round(this + "e" + decimals) + "e-" + decimals))
|
|
}
|
|
|
|
|
|
webix.protoUI({
|
|
$cssName: "text",
|
|
name: "currency",
|
|
$init:function(){
|
|
this.attachEvent("onItemClick", function(){
|
|
this.$setValue(this.config.raw, true)
|
|
})
|
|
this.attachEvent("onBlur", function(){
|
|
this.$setValue(this.config.value)
|
|
})
|
|
},
|
|
$render:function(){
|
|
this.$setValue(this.config.value)
|
|
},
|
|
$setValue:function(value, raw){
|
|
this.config.raw = value
|
|
if(!raw){
|
|
value = webix.i18n.priceFormat(value)
|
|
}
|
|
this.getInputNode().value = value
|
|
}
|
|
}, webix.ui.text)
|
|
|
|
|
|
webix.ui.datafilter.rowCount = webix.extend({
|
|
refresh:function(master, node, value){
|
|
node.firstChild.innerHTML = master.count();
|
|
}
|
|
}, webix.ui.datafilter.summColumn)
|
|
|
|
|
|
function validate_rfc(value){
|
|
rfc = value.trim().toUpperCase();
|
|
if ( rfc == ""){
|
|
webix.message({ type:"error", text:"El RFC no puede estar vacío" });
|
|
return false
|
|
}
|
|
|
|
var tipo_persona = $$('tipo_persona').getValue()
|
|
var length = 13
|
|
var start = 4
|
|
if(tipo_persona==2){
|
|
length = 12
|
|
start = 2
|
|
}
|
|
if (rfc.length != length){
|
|
webix.message({ type:"error", text:"Longitud incorrecta del RFC" });
|
|
return false
|
|
}
|
|
if (tipo_persona < 3 && (rfc == RFC_PUBLICO || rfc == RFC_EXTRANJERO)){
|
|
webix.message({ type:"error", text:"RFC incorrecto" });
|
|
return false
|
|
}
|
|
|
|
var part = rfc.slice(0, start);
|
|
var re = new RegExp('[a-z&Ñ]{' + start + '}', 'i');
|
|
if (!part.match(re)){
|
|
webix.message({ type:"error", text: "El RFC tiene caractéres inválidos al inicio" });
|
|
return false
|
|
}
|
|
part = rfc.slice(-3);
|
|
re = new RegExp('[a-z0-9]{3}', 'i');
|
|
if (!part.match(re)){
|
|
webix.message({ type:"error", text: "El RFC tiene caractéres inválidos al final" });
|
|
return false
|
|
}
|
|
|
|
part = rfc.slice(-9, -3);
|
|
re = new RegExp('[0-9]{6}', 'i');
|
|
if (!part.match(re)){
|
|
webix.message({ type:"error", text: "Fecha inválida" });
|
|
return false
|
|
}
|
|
var month = parseInt(part.slice(-4, -2))
|
|
if (month == 0 || month > 12 ){
|
|
webix.message({ type:"error", text: "Fecha inválida" });
|
|
return false
|
|
}
|
|
var day = parseInt(part.slice(-2))
|
|
if (day == 0 || day > 31 ){
|
|
webix.message({ type:"error", text: "Fecha inválida" });
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
|
|
function validate_email(email){
|
|
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
|
|
return re.test(email)
|
|
}
|
|
|
|
|
|
function add_config(args){
|
|
var key = table_config.findOne({key: args.key})
|
|
if(key===null){
|
|
table_config.insert(args)
|
|
}else{
|
|
key.value = args.value
|
|
table_config.update(key)
|
|
}
|
|
}
|
|
|
|
|
|
function get_config(value){
|
|
var key = table_config.findOne({key: value})
|
|
if(key===null){
|
|
return ''
|
|
}else{
|
|
return key.value
|
|
}
|
|
}
|