empresa-libre/source/static/js/ui/partners.js

345 lines
11 KiB
JavaScript
Raw Normal View History

2017-06-27 15:43:02 -05:00
var toolbar_partners = [
2017-06-27 17:07:22 -05:00
{view: 'button', id: 'cmd_new_partner', label: 'Nuevo', type: 'iconButton',
autowidth: true, icon: 'user-plus'},
{view: 'button', id: 'cmd_edit_partner', label: 'Editar', type: 'iconButton',
autowidth: true, icon: 'user'},
{view: 'button', id: 'cmd_delete_partner', label: 'Eliminar', type: 'iconButton',
autowidth: true, icon: 'user-times'},
]
2017-06-27 15:43:02 -05:00
var grid_partners_cols = [
2017-11-16 01:17:22 -06:00
{id: 'index', header:'#', css: 'right',
footer: {content: 'rowCount', colspan: 2, css: 'right'}},
2017-11-16 01:17:22 -06:00
{id: 'id', header: 'Clave', sort: 'int', css: 'right'},
2017-11-26 23:40:14 -06:00
{id: 'rfc', header: ['RFC', {content: 'textFilter'}], adjust: 'data',
sort: 'string', footer: {text: 'Clientes y Proveedores', colspan: 2}},
{id: 'nombre', header: ['Razón Social', {content: 'textFilter'}],
2017-06-27 23:58:03 -05:00
fillspace:true, sort: 'string'},
2017-11-12 21:56:45 -06:00
{id: 'saldo_cliente', header: ['Saldo Cliente', {content: 'numberFilter'}],
width: 150, sort: 'int', format: webix.i18n.priceFormat, css: 'right'},
2017-06-27 17:07:22 -05:00
]
2017-06-27 15:43:02 -05:00
var grid_partners = {
2017-06-27 17:07:22 -05:00
view: 'datatable',
id: 'grid_partners',
select: 'row',
2017-06-27 15:43:02 -05:00
adjust: true,
footer: true,
resizeColumn: true,
headermenu: true,
columns: grid_partners_cols,
2017-11-16 01:17:22 -06:00
pager: 'pager_clientes',
//~ datafetch: 100,
//~ loadahead: 100,
//~ url: '/partners',
ready:function(){
this.adjustColumn('index');
this.adjustColumn('id');
this.adjustColumn('rfc');
},
2017-06-27 15:43:02 -05:00
on:{
'data->onStoreUpdated':function(){
this.data.each(function(obj, i){
obj.index = i+1;
})
}
},
}
2017-06-27 23:58:03 -05:00
var persons_type = [
{id: 1, value: 'Física'},
{id: 2, value: 'Moral'},
{id: 3, value: 'Público'},
{id: 4, value: 'Extranjero'},
]
2017-06-27 15:43:02 -05:00
var controls_fiscales = [
2017-06-28 23:55:53 -05:00
{template: 'Tipo de Persona', type: 'section'},
2017-10-02 00:12:22 -05:00
{view: 'radio', id: 'tipo_persona', name: 'tipo_persona', label: 'Tipos: ',
2017-06-27 23:58:03 -05:00
labelWidth: 150, value: 1, options: persons_type, required: true,
invalidMessage: 'El Tipo de Persona es requerido'},
{template: 'Dirección Fiscal', type: 'section'},
{cols: [{view: 'text', id: 'rfc', name: 'rfc', label: 'RFC: ', width: 300,
required: true, invalidMessage: 'RFC inválido', attributes: {maxlength: 13}},{}]},
2017-10-02 00:12:22 -05:00
{view: 'text', id: 'nombre', name: 'nombre', label: 'Razón Social: ', required: true,
2017-06-27 23:58:03 -05:00
invalidMessage: 'La Razón Social es requerida'},
2017-10-02 00:12:22 -05:00
{view: 'text', id: 'calle', name: 'calle', label: 'Calle: '},
{cols: [{view: 'text', id: 'no_exterior', name: 'no_exterior', width: 300,
2017-06-27 23:58:03 -05:00
label: 'No Exterior: '},{}]},
2017-10-02 00:12:22 -05:00
{cols: [{view: 'text', id: 'no_interior', name: 'no_interior', width: 300,
2017-06-27 23:58:03 -05:00
label: 'No Interior: '},{}]},
2017-10-02 00:12:22 -05:00
{cols: [{view: 'search', id: 'codigo_postal', name: 'codigo_postal',
width: 300, label: 'C.P.: ', attributes: {maxlength: 5}},{}]},
2017-06-27 23:58:03 -05:00
{view: 'text', id: 'colonia', name: 'colonia', label: 'Colonia: '},
{view: 'text', id: 'municipio', name: 'municipio', label: 'Municipio: '},
2017-10-02 00:12:22 -05:00
{view: 'text', id: 'estado', name: 'estado', label: 'Estado: '},
{view: 'text', id: 'pais', name: 'pais', label: 'País: ',
2017-06-27 23:58:03 -05:00
value: 'México', readonly: true},
{template: 'Condiciones Comerciales', type: 'section'},
{cols: [
2017-10-02 00:12:22 -05:00
{view: 'richselect', id: 'forma_pago', name: 'forma_pago',
label: 'Forma de Pago: ', required: true, options: [],
invalidMessage: 'La Forma de pago es requerida'},
{view: 'text', id: 'condicion_pago', name: 'condicion_pago',
label: 'Condiciones de Pago: ', suggest: []},
2017-06-27 23:58:03 -05:00
]},
{cols: [
{view: 'counter', id: 'dias_pago', name: 'dias_pago',
label: 'Días de pago', step: 5, value: 0, min: 0, max: 365,
tooltip: 'Permite calcular las fechas de pago', width: 250},
{view: 'checkbox', id: 'dias_habiles', name: 'dias_habiles',
label: 'Hábiles: ', value: false, width: 180},
{},
2017-10-06 00:10:27 -05:00
]},
{cols: [
{view: 'richselect', id: 'lst_uso_cfdi_socio', name: 'uso_cfdi_socio',
label: 'Uso del CFDI', options: []},
{},
2017-06-27 23:58:03 -05:00
]}
]
var controls_others = [
2017-10-02 00:12:22 -05:00
{view: 'checkbox', id: 'es_activo', name: 'es_activo', label: 'Activo: ',
2017-06-27 23:58:03 -05:00
value: true, bottomLabel: '   Se recomienda solo desactivar y no eliminar'},
2017-10-02 00:12:22 -05:00
{view: 'text', id: 'commercial_name', name: 'nombre_comercial',
label: 'Nombre Comercial: '},
{view: 'text', id: 'telefonos', name: 'telefonos', label: 'Teléfonos: '},
{view: 'text', id: 'web', name: 'web', label: 'Página Web: '},
{view: 'text', id: 'correo_facturas', name: 'correo_facturas',
label: 'Correos para Facturas: ', tooltip: 'Separados por comas',
bottomLabel: 'Uno o más correos electrónicos separados por comas'},
2017-06-27 23:58:03 -05:00
{cols: [
2017-10-02 00:12:22 -05:00
{view: 'checkbox', id: 'es_cliente', name: 'es_cliente',
2017-06-27 23:58:03 -05:00
label: 'Es Cliente: ', value: true, width: 180},
2017-10-02 00:12:22 -05:00
{view: 'text', id: 'cuenta_cliente', name: 'cuenta_cliente',
2017-06-27 23:58:03 -05:00
label: 'Cuenta Cliente: ', disabled: true}, {}]
},
{cols: [
2017-10-02 00:12:22 -05:00
{view: 'checkbox', id: 'es_proveedor', name: 'es_proveedor',
2017-06-27 23:58:03 -05:00
label: 'Es Proveedor: ', value: false, width: 180},
2017-10-02 00:12:22 -05:00
{view: 'text', id: 'cuenta_proveedor', name: 'cuenta_proveedor',
2017-06-27 23:58:03 -05:00
label: 'Cuenta Proveedor: ', disabled: true}, {}]
},
2017-10-02 00:12:22 -05:00
{view: 'checkbox', name: 'es_ong', label: 'Es ONG: ', value: false},
{view: 'text', name: 'tags', label: 'Etiquetas',
tooltip: 'Utiles para filtrados rápidos. Separa por comas.'},
{view: 'textarea' , height: 200, name: 'notas', label: 'Notas'},
2017-06-27 23:58:03 -05:00
]
var toolbar_contacts = [
{view: 'button', id: 'cmd_new_contact', label: 'Nuevo', type: 'iconButton',
autowidth: true, icon: 'user-plus'},
]
var grid_contacts_cols = [
2017-10-16 23:36:10 -05:00
{id: 'index', header: '#', adjust:'data', css:'right',
2017-06-27 23:58:03 -05:00
footer: {content: 'rowCount'}},
{id: 'id', header: '', hidden: true},
{id: 'title', header: 'Título', adjust:'data', sort: 'string',
footer: 'Contactos'},
{id: 'first_name', header: ['Nombre', {content: 'textFilter'}], adjust:'data',
sort: 'string'},
{id: 'paterno', header: ['Apellido Paterno', {content: 'textFilter'}],
fillspace:true, sort: 'string'},
{id: 'materno', header: ['Apellido Materno', {content: 'textFilter'}],
fillspace:true, sort: 'string'},
{id: 'date_born', header: ['Fecha de Nacimiento'],
adjust: 'data'},
]
var grid_contacts = {
view: 'datatable',
id: 'grid_contacts',
select: 'row',
adjust: true,
height: 400,
footer: true,
resizeColumn: true,
headermenu: true,
columns: grid_contacts_cols,
on:{
'data->onStoreUpdated':function(){
this.data.each(function(obj, i){
2017-10-16 23:36:10 -05:00
obj.index = i + 1
2017-06-27 23:58:03 -05:00
})
}
},
}
var grid_email = {
view: 'datatable',
id: 'grid_email',
select: 'row',
adjust: true,
height: 200,
resizeColumn: true,
columns: [
{id: 'id', header: '', hidden: true},
{id: 'type', header: 'Tipo', adjust:'data', sort: 'string'},
{id: 'email', header: ['Correo Electrónico'], fillspace:true, sort: 'string'},
],
}
var grid_phone = {
view: 'datatable',
id: 'grid_phone',
select: 'row',
adjust: true,
height: 200,
resizeColumn: true,
columns: [
{id: 'id', header: '', hidden: true},
{id: 'type', header: 'Tipo', adjust:'data', sort: 'string'},
{id: 'phone', header: ['Teléfono'], fillspace:true, sort: 'string'},
],
}
var controls_contact = [
{template: 'Datos Generales', type: 'section' },
{cols: [
{view: 'combo', id: 'cbo_title_contact', name: 'cbo_title_contact',
label: 'Título: ', width: 150},
{view: 'text', id: 'name_contact', name: 'name_contact',
label: 'Nombre: '},
{view: 'text', id: 'paterno_contact', name: 'paterno_contact',
label: 'A. Paterno: '},
{view: 'text', id: 'materno_contact', name: 'materno_contact',
label: 'A. Materno: '},
{view: 'datepicker', id: 'date_contact', name: 'date_contact',
label: 'Fecha de Nacimiento: ', format: '%d-%M-%Y'},
]},
{template: 'Correos y Teléfonos', type: 'section' },
{cols: [
grid_email,
{maxWidth: 10},
grid_phone,
]},
{},
{ template:"", type: "section" },
{ margin: 10, cols: [{},
{view: "button", id: "cmd_save_conctact", label: "Guardar Contacto" , type: "form", autowidth: true, align:"center"},
{view: "button", id: "cmd_cancel_contact", label: "Regresar" , type: "danger", autowidth: true, align:"center"},
{}]
},
2017-06-27 15:43:02 -05:00
]
2017-06-27 23:58:03 -05:00
var form_contact = {
type: 'space',
cols: [{
view: 'form',
id: 'form_contact',
complexData: true,
elements: controls_contact,
elementsConfig: {
labelPosition: 'top',
},
autoheight: true,
}]
}
var multi_contacts = {
id: 'multi_contacts',
animate: true,
cells:[
{id: 'contacts_home', rows:[
{view: 'toolbar', elements: toolbar_contacts},
grid_contacts,
]},
{id: 'contacts_new', rows:[form_contact, {}]}
]
};
2017-06-27 15:43:02 -05:00
var controls_partner = [
{
2017-06-27 23:58:03 -05:00
view: 'tabview',
id: 'tab_partner',
2017-06-27 23:58:03 -05:00
tabbar: {options: ['Datos Fiscales', 'Otros Datos', 'Contactos']}, animate: true,
2017-06-27 15:43:02 -05:00
cells: [
2017-06-27 23:58:03 -05:00
{id: 'Datos Fiscales', rows: controls_fiscales},
{id: 'Otros Datos', rows: controls_others},
{id: 'Contactos', rows: [multi_contacts]},
2017-06-27 15:43:02 -05:00
]
},
{rows: [
{ template:"", type: "section" },
{ margin: 10, cols: [{},
{view: "button", id: "cmd_save_partner", label: "Guardar" , type: "form", autowidth: true, align:"center"},
{view: "button", id: "cmd_cancel_partner", label: "Cancelar" , type: "danger", autowidth: true, align:"center"},
{}]
},
]}
2017-10-07 00:16:58 -05:00
]
2017-06-27 15:43:02 -05:00
var form_partner = {
2017-06-27 23:58:03 -05:00
type: 'space',
2017-06-27 15:43:02 -05:00
cols: [{
2017-06-27 23:58:03 -05:00
view: 'form',
id: 'form_partner',
2017-06-27 15:43:02 -05:00
complexData: true,
2017-11-15 19:29:51 -06:00
scroll: true,
2017-06-27 15:43:02 -05:00
elements: controls_partner,
elementsConfig: {
2017-06-27 23:58:03 -05:00
labelWidth: 150,
labelAlign: 'right'
2017-06-27 15:43:02 -05:00
},
rules: {
2017-10-02 00:12:22 -05:00
nombre: function(value){ return value.trim() != '';},
2017-06-27 15:43:02 -05:00
rfc: validate_rfc,
}
}]
2017-10-07 00:16:58 -05:00
}
2017-06-27 15:43:02 -05:00
2017-11-16 01:17:22 -06:00
var pager_clientes = {
view: "pager",
id: "pager_clientes",
template: "{common.prev()} {common.pages()} {common.next()}",
size: 100,
group: 10,
}
2017-06-27 15:43:02 -05:00
var multi_partners = {
2017-06-27 23:58:03 -05:00
id: 'multi_partners',
2017-06-27 15:43:02 -05:00
animate: true,
cells:[
2017-06-27 23:58:03 -05:00
{id: 'partners_home', rows:[
{view: 'toolbar', elements: toolbar_partners},
2017-06-27 15:43:02 -05:00
grid_partners,
2017-11-16 01:17:22 -06:00
pager_clientes,
2017-06-27 15:43:02 -05:00
]},
2017-11-15 19:29:51 -06:00
{id: 'partners_new', rows:[form_partner]}
2017-06-27 15:43:02 -05:00
]
2017-06-27 23:58:03 -05:00
}
2017-06-27 15:43:02 -05:00
2017-06-27 23:58:03 -05:00
var title_partners = 'Administración de Clientes y Proveedores'
2017-06-27 15:43:02 -05:00
var app_partners = {
2017-06-27 23:58:03 -05:00
id: 'app_partners',
2017-06-27 15:43:02 -05:00
rows:[
2017-06-27 23:58:03 -05:00
{view: 'template', id: 'th_partner', type: 'header', template: title_partners},
2017-06-27 15:43:02 -05:00
multi_partners
]
2017-06-27 23:58:03 -05:00
}
2017-06-27 15:43:02 -05:00