var localUserID = this.userIDD;
var localUserType = this.userType;
var localInspector = this.Inspector;
var localAdministrator = this.Administrator;
var localContractAdmin = this.ContractAdministrator;
var localOversight = this.Oversight;
var localMaintenance = this.Maintenance;

Ext.require(['*']);
Ext.tip.QuickTipManager.init();

Ext.onReady(function () {

    Ext.tip.QuickTipManager.init();
    var winadd;

    Ext.define('MyApp.store.StUsuarioBusqueda', {
        extend: 'Ext.data.Store',

        constructor: function (cfg) {
            var me = this;
            cfg = cfg || {};
            me.callParent([Ext.apply({
                storeId: 'StUsuarioBusqueda',
                proxy: {
                    type: 'ajax',
                    timeout: 0,
                    url: '../General/Consultas.php',
                    actionMethods:
                    {
                        read: 'POST'
                    },
                    extraParams:
                    {
                        Filsc: 'User',
                        IncludeAll: true
                    },
                    reader: {
                        type: 'json',
                        root: 'Data',
                        totalProperty: 'totalcount'
                    }
                },
                fields: [
                {
                    name: 'UserID'
                },
                {
                    name: 'UserName'
                }
            ]
            }, cfg)]);
        }
    });

    var StUsuarioBusqueda = Ext.create('MyApp.store.StUsuarioBusqueda', {
        autoLoad: true,
        listeners: {
            load: function (store, records, o) {
                if (store.getCount() < 1) {
                    //debugger;
                    Ext.Msg.show({ title: '.::Mensaje del Sistema::.', msg: "No existen Usuarios...Por Favor Verifique" + "<br>...Gracias!!!", buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });
                }
                else {
                    if (localUserType == '1') {
                        Ext.getCmp('cbUsuarioB').setValue(localUserID);
                    } else {
                        Ext.getCmp('cbUsuarioB').enable();
                        Ext.getCmp('cbUsuarioB').setValue('-1');
                    }
                }
            },
            loadexception: function () {

                Ext.Msg.show({ title: '.::Mensaje del Sistema::.', msg: "Error al Cargar Usuarios...Por Favor Verifique" + "<br>...Gracias!!!", buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });
            }
        }
    });

    Ext.define('MyApp.store.StUnidadB', {
        extend: 'Ext.data.Store',

        constructor: function (cfg) {
            var me = this;
            cfg = cfg || {};
            me.callParent([Ext.apply({
                storeId: 'StUnidad',
                proxy: {
                    type: 'ajax',
                    timeout: 0,
                    url: '../General/Consultas.php',
                    actionMethods:
                    {
                        read: 'POST'
                    },
                    extraParams:
                    {
                        Filsc: 'ComboUnidadR',
                        IncludeAll: true
                    },
                    reader: {
                        type: 'json',
                        root: 'Data',
                        totalProperty: 'totalcount'
                    }
                },
                fields: [
                {
                    name: 'UnitRubroID'
                },
                {
                    name: 'ShortDescription'
                }
            ]
            }, cfg)]);
        }
    });

    var StUnidadB = Ext.create('MyApp.store.StUnidadB', {
        autoLoad: true,
        listeners: {
            load: function (store, records, o) {
                if (store.getCount() < 1) {
                    //debugger;
                    Ext.Msg.show({ title: '.::Mensaje del Sistema::.', msg: "No existen Unidades...Por Favor Verifique" + "<br>...Gracias!!!", buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });
                }
                else {
                    Ext.getCmp('cbUnidadB').setValue('-1');
                }
            },
            loadexception: function () {

                Ext.Msg.show({ title: '.::Mensaje del Sistema::.', msg: "Error al Cargar Unidades...Por Favor Verifique" + "<br>...Gracias!!!", buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });
            }
        }
    });

    Ext.define('MyApp.store.StUnidad', {
        extend: 'Ext.data.Store',

        constructor: function (cfg) {
            var me = this;
            cfg = cfg || {};
            me.callParent([Ext.apply({
                storeId: 'StUnidad',
                proxy: {
                    type: 'ajax',
                    timeout: 0,
                    url: '../General/Consultas.php',
                    actionMethods:
                    {
                        read: 'POST'
                    },
                    extraParams:
                    {
                        Filsc: 'ComboUnidadR'
                    },
                    reader: {
                        type: 'json',
                        root: 'Data',
                        totalProperty: 'totalcount'
                    }
                },
                fields: [
                {
                    name: 'UnitRubroID'
                },
                {
                    name: 'ShortDescription'
                }
            ]
            }, cfg)]);
        }
    });

    var StUnidad = Ext.create('MyApp.store.StUnidad', {
        autoLoad: true,
        listeners: {
            load: function (store, records, o) {
                if (store.getCount() < 1) {
                    //debugger;
                    Ext.Msg.show({ title: '.::Mensaje del Sistema::.', msg: "No existen Unidades...Por Favor Verifique" + "<br>...Gracias!!!", buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });
                }
                else {
                    Ext.getCmp('cbUnidadB').setValue('-1');
                }
            },
            loadexception: function () {

                Ext.Msg.show({ title: '.::Mensaje del Sistema::.', msg: "Error al Cargar Unidades...Por Favor Verifique" + "<br>...Gracias!!!", buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });
            }
        }
    });

    Ext.define('MyApp.store.StUnidadC', {
        extend: 'Ext.data.Store',

        constructor: function (cfg) {
            var me = this;
            cfg = cfg || {};
            me.callParent([Ext.apply({
                storeId: 'StUnidadC',
                proxy: {
                    type: 'ajax',
                    timeout: 0,
                    url: '../General/Consultas.php',
                    actionMethods:
                    {
                        read: 'POST'
                    },
                    extraParams:
                    {
                        Filsc: 'ComboUnidadC'
                    },
                    reader: {
                        type: 'json',
                        root: 'Data',
                        totalProperty: 'totalcount'
                    }
                },
                fields: [
                {
                    name: 'UnitID'
                },
                {
                    name: 'ShortDescription'
                }
            ]
            }, cfg)]);
        }
    });

    var StUnidadC = Ext.create('MyApp.store.StUnidadC', {
        autoLoad: true
        /*listeners: {
        load: function (store, records, o) {
        if (store.getCount() < 1) {
        //debugger;
        Ext.Msg.show({ title: '.::Mensaje del Sistema::.', msg: "No existen Unidades...Por Favor Verifique" + "<br>...Gracias!!!", buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });
        }
        else {
        //Ext.getCmp('cbUnidadB').setValue('-1');
        }
        },
        loadexception: function () {

        Ext.Msg.show({ title: '.::Mensaje del Sistema::.', msg: "Error al Cargar Asesores...Por Favor Verifique" + "<br>...Gracias!!!", buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });
        }
        }*/
    });

    Ext.define('MyApp.store.StConceptoE', {
        extend: 'Ext.data.Store',

        constructor: function (cfg) {
            var me = this;
            cfg = cfg || {};
            me.callParent([Ext.apply({
                storeId: 'StConceptoE',
                proxy: {
                    type: 'ajax',
                    timeout: 0,
                    url: '../General/Consultas.php',
                    actionMethods:
                    {
                        read: 'POST'
                    },
                    extraParams:
                    {
                        Filsc: 'ConceptosE'
                    },
                    reader: {
                        type: 'json',
                        root: 'Data',
                        totalProperty: 'totalcount'
                    }
                },
                fields: [
                {
                    name: 'ConceptID'
                },
                {
                    name: 'Description'
                }
            ]
            }, cfg)]);
        }
    });

    var StConceptoE = Ext.create('MyApp.store.StConceptoE', {
        autoLoad: true
    });

    Ext.define('MyApp.store.StConceptoMO', {
        extend: 'Ext.data.Store',

        constructor: function (cfg) {
            var me = this;
            cfg = cfg || {};
            me.callParent([Ext.apply({
                storeId: 'StConceptoMO',
                proxy: {
                    type: 'ajax',
                    timeout: 0,
                    url: '../General/Consultas.php',
                    actionMethods:
                    {
                        read: 'POST'
                    },
                    extraParams:
                    {
                        Filsc: 'ConceptosMO'
                    },
                    reader: {
                        type: 'json',
                        root: 'Data',
                        totalProperty: 'totalcount'
                    }
                },
                fields: [
                {
                    name: 'ConceptID'
                },
                {
                    name: 'Description'
                }
            ]
            }, cfg)]);
        }
    });

    var StConceptoMO = Ext.create('MyApp.store.StConceptoMO', {
        autoLoad: true
    });

    Ext.define('MyApp.store.StConceptoMT', {
        extend: 'Ext.data.Store',

        constructor: function (cfg) {
            var me = this;
            cfg = cfg || {};
            me.callParent([Ext.apply({
                storeId: 'StConceptoMT',
                proxy: {
                    type: 'ajax',
                    timeout: 0,
                    url: '../General/Consultas.php',
                    actionMethods:
                    {
                        read: 'POST'
                    },
                    extraParams:
                    {
                        Filsc: 'ConceptosMT'
                    },
                    reader: {
                        type: 'json',
                        root: 'Data',
                        totalProperty: 'totalcount'
                    }
                },
                fields: [
                {
                    name: 'ConceptID'
                },
                {
                    name: 'Description'
                }
            ]
            }, cfg)]);
        }
    });

    var StConceptoMT = Ext.create('MyApp.store.StConceptoMT', {
        autoLoad: true
    });

    Ext.define('MyApp.store.StConceptoT', {
        extend: 'Ext.data.Store',

        constructor: function (cfg) {
            var me = this;
            cfg = cfg || {};
            me.callParent([Ext.apply({
                storeId: 'StConceptoT',
                proxy: {
                    type: 'ajax',
                    timeout: 0,
                    url: '../General/Consultas.php',
                    actionMethods:
                    {
                        read: 'POST'
                    },
                    extraParams:
                    {
                        Filsc: 'ConceptosT'
                    },
                    reader: {
                        type: 'json',
                        root: 'Data',
                        totalProperty: 'totalcount'
                    }
                },
                fields: [
                {
                    name: 'ConceptID'
                },
                {
                    name: 'Description'
                }
            ]
            }, cfg)]);
        }
    });

    var StConceptoT = Ext.create('MyApp.store.StConceptoT', {
        autoLoad: true
    });

    /////////////////////////////////////////////////////////////////////////////////////////


    ///////////////////STORES GRID/////////////////////////
    Ext.define('MyApp.store.StBusqueda', {
        extend: 'Ext.data.Store',

        constructor: function (cfg) {
            var me = this;
            cfg = cfg || {};
            me.callParent([Ext.apply({
                storeId: 'StBusqueda',
                proxy: {
                    type: 'ajax',
                    timeout: 0,
                    url: '../General/Consultas.php',
                    actionMethods:
                    {
                        read: 'POST'
                    },
                    extraParams:
                    {
                        Filsc: 'Rubro'
                        //loadCall: 'false'
                    },
                    reader: {
                        type: 'json',
                        root: 'Data',
                        totalProperty: 'totalcount'
                    }
                },
                fields: [
                {
                    name: 'RubroID'
                },
                {
                    name: 'Description'
                },
                {
                    name: 'ShortDescription'
                },
                {
                    name: 'Validez'
                },
                {
                    name: 'Performance'
                },
                {
                    name: 'TotalCost'
                },
                {
                    name: 'ProposedValue'
                },
                {
                    name: 'UserName'
                }
            ]
            }, cfg)]);
        }
    });

    var StBusqueda = Ext.create('MyApp.store.StBusqueda', {
        autoLoad: false,
        listeners: {
            load: function (store, records, o) {

                if (store.getCount() < 1) {
                    Ext.Msg.show({ title: '.::Mensaje del Sistema::.', msg: "No existen Rubros...Por Favor Verifique" + "<br>...Gracias!!!", buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });
                }
            },
            loadexception: function () {
                Ext.Msg.show({ title: '.::Mensaje del Sistema::.', msg: "Error al Cargar Rubros...Por Favor Verifique" + "<br>...Gracias!!!", buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });
            }
        }
    });

    Ext.define('PersonEquipo', {
        extend: 'Ext.data.Model',
        fields: [
                {
                    name: 'ConceptRubroID'
                },
                {
                    name: 'Description'
                },
                {
                    name: 'Special'
                },
                {
                    name: 'Amount'
                },
                {
                    name: 'ShortDescription'
                },
                {
                    name: 'Rate'
                },
                {
                    name: 'ParcialCost'
                },
                {
                    name: 'TotalCost'
                }
            ]
    });

    Ext.define('MyApp.store.StEquipo', {
        extend: 'Ext.data.Store',

        constructor: function (cfg) {
            var me = this;
            cfg = cfg || {};
            me.callParent([Ext.apply({
                storeId: 'StEquipo',
                proxy: {
                    type: 'ajax',
                    timeout: 0,
                    url: '../General/Consultas.php',
                    actionMethods:
                    {
                        read: 'POST'
                    },
                    extraParams:
                    {
                        Filsc: 'ConceptosRubro'
                        //loadCall: 'false'
                    },
                    reader: {
                        type: 'json',
                        root: 'Data',
                        totalProperty: 'totalcount'
                    }
                }
            }, cfg)]);
        }
    });

    var StEquipo = Ext.create('MyApp.store.StEquipo', {
        autoLoad: false,
        model: 'PersonEquipo',
        listeners: {
            load: function (store, records, o) {
                subTotalE = 0.0;
                totalE = 0.0;
                for (i = 0; i < store.data.length; i++) {
                    if (records[i].data.Special == '1') {
                        subTotalE = (parseFloat(Ext.getCmp('txParcialMO').getValue()) * 0.05);
                        totalE += parseFloat(subTotalE).toFixed(2) * 1;
                    } else {
                        subTotalE = parseFloat(records[i].data.Amount) * parseFloat(records[i].data.Rate) * parseFloat(Ext.getCmp('txRendimiento').getValue());
                        totalE += parseFloat(subTotalE).toFixed(2) * 1;
                    }
                }
                Ext.getCmp('txParcialE').setValue(parseFloat(totalE).toFixed(2));
                updatespecial(Ext.getCmp('txParcialMO').getValue());
            },
            loadexception: function () {
                Ext.Msg.show({ title: '.::Mensaje del Sistema::.', msg: "Error al cargar conceptos de Mano de Obra...Por Favor Verifique" + "<br>...Gracias!!!", buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });
            }
        }
    });

    function updatespecial(parcialMO) {
        Ext.Ajax.request({
            url: '../ModuloBase/RubroClass.php',
            method: 'POST',
            params: {
                Opcion: 'CALCULARESPECIAL',
                RubroID: Ext.getCmp('txRubroID').getValue(),
                ParcialMO: parcialMO
            },
            success: function (result, request) {
                var jsonData = Ext.decode(result.responseText);
                if (jsonData.success == true) {

                }
                else {
                    Ext.Msg.show({ title: '.::Mensaje del Sistema', msg: 'Fallo actualizacion de Especial', buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR });
                }
            },
            failure: function (result, request) {
                resultado = false;
                if (result.failureType == 'server') {
                    Ext.Msg.alert('.::Mensaje del Sistema::.!', "Problemas con el Servidor...Consulte con el Administrador");
                }
                else {
                    Ext.Msg.alert('Problemas con el Servidor...', "Error no Identificado...Consulte con el Administrador");
                }
            }
        })
    };

    Ext.define('MyApp.store.StManoObra', {
        extend: 'Ext.data.Store',

        constructor: function (cfg) {
            var me = this;
            cfg = cfg || {};
            me.callParent([Ext.apply({
                storeId: 'StManoObra',
                proxy: {
                    type: 'ajax',
                    timeout: 0,
                    url: '../General/Consultas.php',
                    actionMethods:
                    {
                        read: 'POST'
                    },
                    extraParams:
                    {
                        Filsc: 'ConceptosRubro'
                        //loadCall: 'false'
                    },
                    reader: {
                        type: 'json',
                        root: 'Data',
                        totalProperty: 'totalcount'
                    }
                }/*,
                fields: [
                {
                    name: 'ConceptRubroID'
                },
                {
                    name: 'Description'
                },
                {
                    name: 'Amount'
                },
                {
                    name: 'Rate'
                },
                {
                    name: 'ParcialCost'
                },
                {
                    name: 'TotalCost'
                }
            ]*/
            }, cfg)]);
        }
    });

    var StManoObra = Ext.create('MyApp.store.StManoObra', {
        autoLoad: false,
        model: 'PersonEquipo',
        listeners: {
            load: function (store, records, o) {

                subTotalMO = 0.0;
                totalMO = 0.0;
                for (i = 0; i < store.data.length; i++) {
                    subTotalMO = parseFloat(records[i].data.Amount) * parseFloat(records[i].data.Rate) * parseFloat(Ext.getCmp('txRendimiento').getValue());
                    totalMO += parseFloat(subTotalMO).toFixed(2) * 1;
                }
                Ext.getCmp('txParcialMO').setValue(parseFloat(totalMO).toFixed(2));

                StEquipo.load({ params: { Category: 1, RubroID: Ext.getCmp('txRubroID').getValue()} });
            },
            loadexception: function () {
                Ext.Msg.show({ title: '.::Mensaje del Sistema::.', msg: "Error al conceptos de Mano de Obra...Por Favor Verifique" + "<br>...Gracias!!!", buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });
            }
        }
    });

    Ext.define('MyApp.store.StMateriales', {
        extend: 'Ext.data.Store',

        constructor: function (cfg) {
            var me = this;
            cfg = cfg || {};
            me.callParent([Ext.apply({
                storeId: 'StMateriales',
                proxy: {
                    type: 'ajax',
                    timeout: 0,
                    url: '../General/Consultas.php',
                    actionMethods:
                    {
                        read: 'POST'
                    },
                    extraParams:
                    {
                        Filsc: 'ConceptosRubro'
                        //loadCall: 'false'
                    },
                    reader: {
                        type: 'json',
                        root: 'Data',
                        totalProperty: 'totalcount'
                    }
                }/*,
                fields: [
                {
                    name: 'ConceptRubroID'
                },
                {
                    name: 'Description'
                },
                {
                    name: 'Amount'
                },
                {
                    name: 'ShortDescription'
                },
                {
                    name: 'ParcialCost'
                },
                {
                    name: 'TotalCost'
                }
            ]*/
            }, cfg)]);
        }
    });

    var StMateriales = Ext.create('MyApp.store.StMateriales', {
        autoLoad: false,
        model: 'PersonEquipo',
        listeners: {
            load: function (store, records, o) {
                subTotalMT = 0.0;
                totalMT = 0.0;
                for (i = 0; i < store.data.length; i++) {
                    subTotalMT = parseFloat(store.data.items[i].data.Amount * store.data.items[i].data.Rate);
                    totalMT += parseFloat(subTotalMT).toFixed(2) * 1;
                }
                Ext.getCmp('txParcialMT').setValue(parseFloat(totalMT).toFixed(2));
            },
            loadexception: function () {
                Ext.Msg.show({ title: '.::Mensaje del Sistema::.', msg: "Error al conceptos de Mano de Obra...Por Favor Verifique" + "<br>...Gracias!!!", buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });
            }
        }
    });

    Ext.define('MyApp.store.StTransporte', {
        extend: 'Ext.data.Store',

        constructor: function (cfg) {
            var me = this;
            cfg = cfg || {};
            me.callParent([Ext.apply({
                storeId: 'StTransporte',
                proxy: {
                    type: 'ajax',
                    timeout: 0,
                    url: '../General/Consultas.php',
                    actionMethods:
                    {
                        read: 'POST'
                    },
                    extraParams:
                    {
                        Filsc: 'ConceptosRubro'
                    },
                    reader: {
                        type: 'json',
                        root: 'Data',
                        totalProperty: 'totalcount'
                    }
                }/*,
                fields: [
                {
                    name: 'ConceptRubroID'
                },
                {
                    name: 'Description'
                },
                {
                    name: 'Amount'
                },
                {
                    name: 'Rate'
                },
                {
                    name: 'ShortDescription'
                },
                {
                    name: 'TotalCost'
                }
            ]*/
            }, cfg)]);
        }
    });

    var StTransporte = Ext.create('MyApp.store.StTransporte', {
        autoLoad: false,
        model: 'PersonEquipo',
        listeners: {
            load: function (store, records, o) {
                subTotalT = 0.0;
                totalT = 0.0;
                for (i = 0; i < store.data.length; i++) {
                    subTotalT = parseFloat(store.data.items[i].data.Amount * store.data.items[i].data.Rate);
                    totalT += parseFloat(subTotalT).toFixed(2) * 1;
                }
                Ext.getCmp('txParcialT').setValue(parseFloat(totalT).toFixed(2));
            },
            loadexception: function () {
                Ext.Msg.show({ title: '.::Mensaje del Sistema::.', msg: "Error al conceptos de Mano de Obra...Por Favor Verifique" + "<br>...Gracias!!!", buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });
            }
        }
    });

    Ext.define('MyApp.store.StCategoria', {
        extend: 'Ext.data.Store',

        constructor: function (cfg) {
            var me = this;
            cfg = cfg || {};
            me.callParent([Ext.apply({
                storeId: 'StCategoria',
                proxy: {
                    type: 'ajax',
                    timeout: 0,
                    url: '../General/Consultas.php',
                    actionMethods:
                    {
                        read: 'POST'
                    },
                    extraParams:
                    {
                        Filsc: 'ComboCategoria'
                    },
                    reader: {
                        type: 'json',
                        root: 'Data',
                        totalProperty: 'totalcount'
                    }
                },
                fields: [
                {
                    name: 'CategoryID'
                },
                {
                    name: 'Description'
                }
            ]
            }, cfg)]);
        }
    });

    var StCategoria = Ext.create('MyApp.store.StCategoria', {
        autoLoad: true,
        listeners: {
            load: function (store, records, o) {
                if (store.getCount() < 1) {
                    //debugger;
                    Ext.Msg.show({ title: '.::Mensaje del Sistema::.', msg: "No existen Categorias...Por Favor Verifique" + "<br>...Gracias!!!", buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });
                }
                else {
                    //Ext.getCmp('cbCategoriaB').setValue('-1');
                }
            },
            loadexception: function () {
                Ext.Msg.show({ title: '.::Mensaje del Sistema::.', msg: "Error al Cargar Categorias...Por Favor Verifique" + "<br>...Gracias!!!", buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });
            }
        }
    });
    ///////////////////////////////////////////////////////FIN STORES/////////////////////////////////////////
    var grBusqueda = Ext.create('Ext.grid.Panel', {
        store: StBusqueda,
        columnLines: true,
        layout: {
            type: 'fit'
        },
        columns: [
        //new Ext.grid.RowNumberer(),
                {
                xtype: 'rownumberer',
                width: 35
            },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'RubroID',
                    text: 'ID',
                    width: 70
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'Description',
                    text: 'Detalle',
                    width: 250
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'ShortDescription',
                    text: 'Unidad',
                    width: 70
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'Validez',
                    text: 'Validez',
                    width: 100
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'Performance',
                    text: 'Rendimiento',
                    width: 100
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'TotalCost',
                    text: 'Costo Total',
                    width: 100
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'ProposedValue',
                    text: 'Valor Propuesto',
                    width: 100
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'UserName',
                    text: 'Usuario',
                    width: 100
                }
            ],
        stateful: false
    })

    grBusqueda.on('itemdblclick', function (grd, record, item, index, e) {
        Ext.getCmp('tabRubro').enable();
        DobleClickRubro(record.data.RubroID);
    }, this)

    /////////////BUTTONS CATEGORIAS///////////////

    function RubroDeleteConcepto(grid, store, category) {
        var sm = grid.getSelectionModel();
        var ConceptoRubroID = sm.selected.items[0].data.ConceptRubroID;
        store.remove(sm.getSelection());
        deleteConceptRubro(category, ConceptoRubroID);
        if (StConceptoE.getCount() > 0) {
            sm.select(0);
        }
    }

    function RubroDeleteConceptoE(result) {
        if (result != 'yes') return;
        RubroDeleteConcepto(gridEquipo, StConceptoE, 'EQUIPO');
    }

    var btEliminarConceptoE = Ext.create('Ext.Action', {
        itemId: 'removeConceptE',
        text: 'Eliminar Concepto',
        hidden: (localMaintenance == '1' ? true : false),
        handler: function (e) {
            Ext.Msg.confirm('Confirmación', 'Seguro de eliminar este Equipo?', RubroDeleteConceptoE);
        },
        disabled: true
    });

    function RubroDeleteConceptoMO(result) {
        if (result != 'yes') return;
        RubroDeleteConcepto(gridManoObra, StConceptoMO, 'MANOOBRA');
    }
    var btEliminarConceptoMO = Ext.create('Ext.Action', {
        itemId: 'removeConceptMO',
        text: 'Eliminar Concepto',
        hidden: (localMaintenance == '1' ? true : false),
        handler: function (e) {
            Ext.Msg.confirm('Confirmación', 'Seguro de eliminar esta Mano de Obra?', RubroDeleteConceptoMO);
        },
        disabled: true
    });


    function RubroDeleteConceptoMT(result) {
        if (result != 'yes') return;
        RubroDeleteConcepto(gridMateriales, StConceptoMT, 'MATERIALES');
    }
    var btEliminarConceptoMT = Ext.create('Ext.Action', {
        itemId: 'removeConceptMT',
        text: 'Eliminar Concepto',
        hidden: (localMaintenance == '1' ? true : false),
        handler: function (e) {
            Ext.Msg.confirm('Confirmación', 'Seguro de eliminar este Material?', RubroDeleteConceptoMT);
        },
        disabled: true
    });

    function RubroDeleteConceptoT(result) {
        if (result != 'yes') return;
        RubroDeleteConcepto(gridTransporte, StConceptoT, "TRANSPORTE");
    }
    var btEliminarConceptoT = Ext.create('Ext.Action', {
        itemId: 'removeConceptT',
        text: 'Eliminar Concepto',
        hidden: (localMaintenance == '1' ? true : false),
        handler: function (e) {
            Ext.Msg.confirm('Confirmación', 'Seguro de eliminar este Material?', RubroDeleteConceptoT);
        },
        disabled: true
    });

    function onEditEquipo(e) {
        // execute an XHR to send/commit data to the server, in callback do (if successful):
        //////grabar el registro o actualizarlo dependiendo si es que el valor ID es -1 o no
        //btAgregarDeposit.enable();
        //btEliminarDeposit.enable();
        saveConcept(e, 'CONCEPTSAVE', 'EQUIPO', 1);
        //recalculate();
    };

    function onEditManoObra(e) {
        // execute an XHR to send/commit data to the server, in callback do (if successful):
        //////grabar el registro o actualizarlo dependiendo si es que el valor ID es -1 o no
        //btAgregarDeposit.enable();
        //btEliminarDeposit.enable();
        saveConcept(e, 'CONCEPTSAVE', 'MANOOBRA', 2);
        //recalculate();
    };

    function onEditMateriales(e) {
        // execute an XHR to send/commit data to the server, in callback do (if successful):
        //////grabar el registro o actualizarlo dependiendo si es que el valor ID es -1 o no
        //btAgregarDeposit.enable();
        //btEliminarDeposit.enable();
        saveConcept(e, 'CONCEPTSAVE', 'MATERIALES', 3);
        //recalculate();
    };

    function onEditTransporte(e) {
        // execute an XHR to send/commit data to the server, in callback do (if successful):
        //////grabar el registro o actualizarlo dependiendo si es que el valor ID es -1 o no
        //btAgregarDeposit.enable();
        //btEliminarDeposit.enable();
        saveConcept(e, 'CONCEPTSAVE', 'TRANSPORTE', 4);
        //recalculate();
    };

    var rowEditingE = Ext.create('Ext.grid.plugin.RowEditing', {
        clicksToMoveEditor: 1,
        //autoCancel: true,
        width: 500
    });

    var rowEditingMO = Ext.create('Ext.grid.plugin.RowEditing', {
        clicksToMoveEditor: 1,
        //autoCancel: true,
        width: 500
    });

    var rowEditingMT = Ext.create('Ext.grid.plugin.RowEditing', {
        clicksToMoveEditor: 1,
        //autoCancel: true,
        width: 500
    });

    var rowEditingT = Ext.create('Ext.grid.plugin.RowEditing', {
        clicksToMoveEditor: 1,
        //autoCancel: true,
        width: 500
    });

    var gridEquipo = Ext.create('Ext.grid.Panel', {
        store: StEquipo,
        //id: 'grConceptosE',
        columnLines: true,
        plugins: [rowEditingE],
        //bbar: pagerClient,
        region: 'center',
        layout: {
            type: 'fit'
        },
        defaults: {
            allowBlank: true
        },
        columns: [
        new Ext.grid.RowNumberer(),
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'ConceptRubroID',
                    text: 'ID',
                    width: 40
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'Description',
                    text: 'Descripcion',
                    width: 200
                },
                {
                    //xtype: 'gridcolumn',
                    dataIndex: 'Amount',
                    text: 'Cantidad',
                    width: 70,
                    field: {
                        xtype: 'numberfield'
                    },
                    renderer: function (v, params, record) {
                        return (record.data.Special == 1 ? '' : record.data.Amount);
                        //return (record.data.Amount);
                    }
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'Rate',
                    text: 'Tarifa',
                    width: 70,
                    renderer: function (v, params, record) {
                        if (record.data.Special == '1')
                            return '';
                        return record.data.Rate;
                    }
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'ParcialCost',
                    text: 'Costo Parcial',
                    width: 70,
                    renderer: function (v, params, record) {
                        if (record.data.Special == '1')
                            return '';
                        return ((parseFloat(record.data.Amount) * parseFloat(record.data.Rate)).toFixed(2));
                    }
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'TotalCost',
                    text: 'Costo Total',
                    width: 70,
                    renderer: function (v, params, record) {
                        if (record.data.Special == '1')
                            return (parseFloat(Ext.getCmp('txParcialMO').getValue()) * 0.05).toFixed(2);
                        //return ((parseFloat(record.data.Amount) * parseFloat(record.data.Rate) * parseFloat(Ext.getCmp('txRendimiento').getValue())).toFixed(2));
                        return record.data.TotalCost;
                    }
                }

            ],
        dockedItems: [{
            xtype: 'toolbar',
            items: [
                btEliminarConceptoE,
                 {
                     xtype: 'textfield',
                     id: 'txParcialE',
                     margin: '0 0 0 300',
                     width: 140,
                     fieldLabel: 'Parcial M',
                     labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                     labelWidth: 60,
                     disabled: true
                 }
            ]
        }],
        listeners: {
            beforeedit: function (object, uno, dos) {                
                if (uno.colIdx != 3) {
                    return false;
                }
                if (localMaintenance == '1' && localAdministrator == '0')
                    return false;
                return true;
            },
            selectionchange: function (view, records) {
                gridEquipo.down('#removeConceptE').setDisabled(!records.length);
            }
        }
        //stateful: false
    })
    gridEquipo.on('edit', onEditEquipo, this);

    var gridManoObra = Ext.create('Ext.grid.Panel', {
        store: StManoObra,
        columnLines: true,
        plugins: [rowEditingMO],
        //bbar: pagerClient,
        region: 'center',
        layout: {
            type: 'fit'
        },
        columns: [
        new Ext.grid.RowNumberer(),
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'ConceptRubroID',
                    text: 'ID',
                    width: 40
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'Description',
                    text: 'Descripcion',
                    width: 200
                },
                {
                    //xtype: 'gridcolumn',
                    dataIndex: 'Amount',
                    text: 'Cantidad',
                    width: 70,
                    field: {
                        xtype: 'numberfield'
                    }
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'Rate',
                    text: 'Jornal/HR',
                    width: 70
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'ParcialCost',
                    text: 'Costo Hora',
                    width: 70,
                    renderer: function (v, params, record) {
                        return ((parseFloat(record.data.Amount) * parseFloat(record.data.Rate)).toFixed(2));
                    }
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'TotalCost',
                    text: 'Costo Unitario',
                    width: 90,
                    renderer: function (v, params, record) {
                        return ((parseFloat(record.data.Amount) * parseFloat(record.data.Rate) * parseFloat(Ext.getCmp('txRendimiento').getValue())).toFixed(2));
                    }
                }

            ],
        dockedItems: [{
            xtype: 'toolbar',
            items: [
                btEliminarConceptoMO,
                {
                    xtype: 'textfield',
                    id: 'txParcialMO',
                    margin: '0 0 0 300',
                    width: 140,
                    fieldLabel: 'Parcial N',
                    labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                    labelWidth: 60,
                    disabled: true
                }
            ]
        }],
        listeners: {
            beforeedit: function (object, uno, dos) {                
                if (uno.colIdx != 3) 
                    return false;
                if (localMaintenance == '1' && localAdministrator == '0')
                    return false;
                return true;
            },
            selectionchange: function (view, records) {
                gridManoObra.down('#removeConceptMO').setDisabled(!records.length);                
            }
        }
        //stateful: false
    })
    gridManoObra.on('edit', onEditManoObra, this);

    var gridMateriales = Ext.create('Ext.grid.Panel', {
        store: StMateriales,
        columnLines: true,
        plugins: [rowEditingMT],
        //bbar: pagerClient,
        region: 'center',
        layout: {
            type: 'fit'
        },
        columns: [
        new Ext.grid.RowNumberer(),
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'ConceptRubroID',
                    text: 'ID',
                    width: 40
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'Description',
                    text: 'Descripcion',
                    width: 200
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'ShortDescription',
                    text: 'Unidad',
                    width: 70
                },
                {
                    //xtype: 'gridcolumn',
                    dataIndex: 'Amount',
                    text: 'Cantidad',
                    width: 70,
                    field: {
                        xtype: 'numberfield'
                    }
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'ParcialCost',
                    text: 'Unitario',
                    width: 70,
                    renderer: function (v, params, record) {
                        return (record.data.Rate);
                    }
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'TotalCost',
                    text: 'Costo Unitario',
                    width: 90
                    //renderer: function (v, params, record) {
                    //return ((parseFloat(record.data.Amount) * parseFloat(record.data.ParcialCost)).toFixed(2));
                    //}
                }

            ],

        dockedItems: [{
            xtype: 'toolbar',
            items: [
                btEliminarConceptoMT,
                 {
                     xtype: 'textfield',
                     id: 'txParcialMT',
                     margin: '0 0 0 300',
                     width: 140,
                     fieldLabel: 'Parcial O',
                     labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                     labelWidth: 60,
                     disabled: true
                 }
            ]
        }],
        listeners: {
            beforeedit: function (object, uno, dos) {                
                if (uno.colIdx != 4) {
                    return false;
                }
                if (localMaintenance == '1' && localAdministrator == '0')
                    return false;
                return true;
            },
            selectionchange: function (view, records) {
                gridMateriales.down('#removeConceptMT').setDisabled(!records.length);                
            }
        }
        //stateful: false
    })
    gridMateriales.on('edit', onEditMateriales, this);

    var gridTransporte = Ext.create('Ext.grid.Panel', {
        store: StTransporte,
        columnLines: true,
        plugins: [rowEditingT],
        //bbar: pagerClient,
        region: 'center',
        layout: {
            type: 'fit'
        },
        columns: [
        new Ext.grid.RowNumberer(),
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'ConceptRubroID',
                    text: 'ID',
                    width: 40
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'Description',
                    text: 'Descripcion',
                    width: 200
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'ShortDescription',
                    text: 'Unidad',
                    width: 70
                },
                {
                    //xtype: 'gridcolumn',
                    dataIndex: 'Amount',
                    text: 'Cantidad',
                    width: 70,
                    field: {
                        xtype: 'numberfield'
                    }
                },
                {
                    xtype: 'gridcolumn',
                    //dataIndex: 'Rate',
                    dataIndex: 'ParcialCost',
                    text: 'Tarifa',
                    width: 70
                    //renderer: function (v, params, record) {
                    //return ((parseFloat(record.data.Amount) * parseFloat(record.data.Rate)).toFixed(2));
                    //}
                },
                {
                    xtype: 'gridcolumn',
                    dataIndex: 'TotalCost',
                    text: 'Costo',
                    width: 90
                    //renderer: function (v, params, record) {
                    //return ((parseFloat(record.data.Amount) * parseFloat(record.data.Rate)).toFixed(2));
                    //}
                }

            ],
        dockedItems: [{
            xtype: 'toolbar',
            items: [
                btEliminarConceptoT,
                {
                    xtype: 'textfield',
                    id: 'txParcialT',
                    margin: '0 0 0 300',
                    width: 140,
                    fieldLabel: 'Parcial P',
                    labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                    labelWidth: 60,
                    disabled: true
                }
            ]
        }],
        listeners: {
            beforeedit: function (object, uno, dos) {                
                if (uno.colIdx != 4)
                    return false;
                if (localMaintenance == '1' && localAdministrator == '0')
                    return false;             
                return true;
            },
            selectionchange: function (view, records) {
                gridTransporte.down('#removeConceptT').setDisabled(!records.length);                
            }
        }
        //stateful: false
    })
    gridTransporte.on('edit', onEditTransporte, this);

    function DobleClickRubro(idRubro) {
        if (idRubro != -1) {
            Ext.getCmp('tabCategorias').enable();
            Ext.getCmp('tabContenedor').setActiveTab('tabRubro');
        }
        Ext.Ajax.request
   		({
   		    url: '../General/Consultas.php',
   		    method: 'POST',
   		    params: {

   		        Filsc: 'ConsultarRubro',
   		        RubroID: idRubro
   		    },
   		    success: function (result, request) {
   		        var jsonData = Ext.decode(result.responseText);
   		        if (jsonData.success == true) {
   		            Ext.getCmp('tabRubro').setTitle("Rubro:" + jsonData.Data[0].Description);

   		            Ext.getCmp('txRubroID').setValue(jsonData.Data[0].RubroID);
   		            Ext.getCmp('txDescripcion').setValue(jsonData.Data[0].Description);
   		            Ext.getCmp('chStatus').setValue(jsonData.Data[0].Status != '1' ? false : true);
   		            Ext.getCmp('cbUnidad').setValue(jsonData.Data[0].UnitID);
   		            Ext.getCmp('txValidez').setValue(Ext.Date.parse(jsonData.Data[0].Validez, 'F Y'));
   		            Ext.getCmp('txCostosIndirectos').setValue(jsonData.Data[0].NoDirectCost);
   		            Ext.getCmp('txRendimiento').setValue(jsonData.Data[0].Performance);
   		            Ext.getCmp('txDetalle').setValue(jsonData.Data[0].Detail);
   		            Ext.getCmp('txParcialE').setValue(jsonData.Data[0].PartialEquipment);
   		            Ext.getCmp('txParcialMO').setValue(jsonData.Data[0].PartialLabor);
   		            Ext.getCmp('txParcialMT').setValue(jsonData.Data[0].PartialMaterial);
   		            Ext.getCmp('txParcialT').setValue(jsonData.Data[0].PartialTransport);
   		            Ext.getCmp('txTotalCD').setValue(jsonData.Data[0].DirectCost);
   		            Ext.getCmp('txCostosIU').setValue(jsonData.Data[0].NoDirectCostUtility);
   		            Ext.getCmp('txTotalRubro').setValue(jsonData.Data[0].TotalCost);
   		            Ext.getCmp('txValorPropuesto').setValue(jsonData.Data[0].ProposedValue);
   		            Ext.getCmp('txSpecification').setValue(jsonData.Data[0].Specification);
   		            ///auditoria/////
   		            Ext.getCmp('txUsuarioIR').setValue(jsonData.Data[0].UsuarioCrea);
   		            Ext.getCmp('txFechaIR').setValue(jsonData.Data[0].CreateDate);
   		            Ext.getCmp('txUsuarioMR').setValue(jsonData.Data[0].UsuarioModifica);
   		            Ext.getCmp('txFechaMR').setValue(jsonData.Data[0].UpdateDate);

   		            //StEquipo.load({ params: { Category: 1} });
   		            //StEquipo.load({ params: { Category: 1, RubroID: idRubro} });
   		            StManoObra.load({ params: { Category: 2, RubroID: idRubro} });
   		            StMateriales.load({ params: { Category: 3, RubroID: idRubro} });
   		            StTransporte.load({ params: { Category: 4, RubroID: idRubro} });

   		        }
   		        else {
   		            Ext.Msg.show({ title: '.::Mensaje del Sistema::.', msg: "Error al Cargar Rubro...Por Favor Verifique" + "<br>...Gracias!!!", buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR });
   		        }
   		    },
   		    failure: function (result, request) {
   		        if (result.failureType == 'server') {
   		            Ext.Msg.alert('.::Mensaje del Sistema::.!', "Problemas con el servidor...Consulte con el Administrador");
   		        }
   		        else {
   		            Ext.Msg.alert('Problemas con el servidor...', "Error no Identificado...Consulte con el Administrador");
   		        }
   		    }
   		});
    }
    ///////////////////////////////////////////////////////////////////////////////////////////////////////
    Ext.define('MyApp.view.ui.MyViewport', {
        extend: 'Ext.container.Viewport',

        layout: {
            type: 'fit'
        },

        initComponent: function () {
            var me = this;

            me.items = [
                {
                    xtype: 'tabpanel',
                    id: 'tabContenedor',
                    activeTab: 0,
                    items: [
                        {
                            xtype: 'panel',
                            layout: {
                                type: 'border'
                            },
                            title: 'Busqueda',
                            items: [
                                {
                                    xtype: 'panel',
                                    height: 115,
                                    region: 'north',
                                    dockedItems: [
                                        {
                                            xtype: 'toolbar',
                                            dock: 'top',
                                            items: [
                                                {
                                                    xtype: 'buttongroup',
                                                    //width: 73,
                                                    title: '',
                                                    columns: 3,
                                                    layout: {
                                                        columns: 3,
                                                        type: 'table'
                                                    },
                                                    items: [
                                                        {
                                                            xtype: 'button',
                                                            id: 'btBuscar',
                                                            text: 'Buscar',
                                                            handler: function () {
                                                                doBuscar();
                                                            }
                                                        },
                                                        {
                                                            xtype: 'button',
                                                            id: 'btNuevoRubro',
                                                            text: 'Nuevo Rubro',
                                                            hidden: (localMaintenance == '1' ? true : false),
                                                            handler: function () {
                                                                Ext.getCmp('tabRubro').enable();
                                                                Ext.getCmp('tabContenedor').setActiveTab('tabRubro');
                                                                LimpiarRubro();
                                                            }
                                                        },
                                                        {
                                                            xtype: 'button',
                                                            id: 'btImprimirB',
                                                            text: 'Listado',
                                                            handler: function () {
                                                                doImprimir();
                                                            }
                                                        }
                                                    ]
                                                }
                                            ]
                                        }
                                    ],
                                    defaults: {
                                        enableKeyEvents: true,
                                        listeners: {
                                            specialKey: function (field, el) {
                                                if (el.getKey() == Ext.EventObject.ENTER) {
                                                    Ext.getCmp('btBuscar').handler.call(Ext.getCmp('btBuscar').scope);
                                                }
                                            }
                                        }
                                    },
                                    items: [
                                        {
                                            xtype: 'fieldset',
                                            height: 70,
                                            //margin: '3 3 3 3',
                                            layout: {
                                                columns: 1,
                                                type: 'table'
                                            },
                                            title: 'Filtro de Busqueda',
                                            items: [
                                                {
                                                    xtype: 'fieldcontainer',
                                                    height: 25,
                                                    width: 600,
                                                    layout: {
                                                        columns: 3,
                                                        type: 'table'
                                                    },
                                                    items: [
                                                        {
                                                            xtype: 'textfield',
                                                            id: 'txDescripcionB',
                                                            margin: '0 3 0 0',
                                                            width: 300,
                                                            labelWidth: 70,
                                                            fieldLabel: 'Descripcion',
                                                            labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                            listeners: {
                                                                specialKey: function (field, el) {
                                                                    if (el.getKey() == Ext.EventObject.ENTER) {
                                                                        Ext.getCmp('btBuscar').handler.call(Ext.getCmp('btBuscar').scope);
                                                                    }
                                                                }
                                                            }
                                                        },
                                                        {
                                                            xtype: 'combobox',
                                                            id: 'cbUnidadB',
                                                            margin: '0 3 0 10',
                                                            width: 140,
                                                            labelWidth: 45,
                                                            labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                            fieldLabel: 'Unidad',
                                                            labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                            displayField: 'ShortDescription',
                                                            valueField: 'UnitRubroID',
                                                            queryMode: 'local',
                                                            editable: false,
                                                            store: StUnidadB
                                                        },
                                                        {
                                                            xtype: 'combobox',
                                                            id: 'cbUsuarioB',
                                                            margin: '0 3 0 10',
                                                            width: 220,
                                                            fieldLabel: 'Elaborado por',
                                                            labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                            labelWidth: 85,
                                                            displayField: 'UserName',
                                                            valueField: 'UserID',
                                                            queryMode: 'local',
                                                            editable: false,
                                                            //selectOnFocus: true,
                                                            forceSelection: true,
                                                            //lazyRender: true,
                                                            store: StUsuarioBusqueda.load({ params: { Type: 0} })
                                                        }
                                                    ]
                                                }

                                            ]
                                        }
                                    ]
                                },
                                {
                                    xtype: 'panel',
                                    title: 'Resultados de la Busqueda',
                                    layout: {
                                        type: 'fit'
                                    },
                                    region: 'center',
                                    items: [grBusqueda]
                                }
                            ]
                        },
                        {
                            xtype: 'tabpanel',
                            id: 'tabRubro',
                            activeTab: 0,
                            disabled: true,
                            title: 'Rubro',
                            dockedItems: [
                                    {
                                        xtype: 'toolbar',
                                        region: 'center',
                                        dock: 'top',
                                        items: [
                                            {
                                                xtype: 'buttongroup',
                                                columns: 6,
                                                layout: {
                                                    columns: 6,
                                                    type: 'table'
                                                },
                                                items: [
                                                    {
                                                        xtype: 'button',
                                                        id: 'btNuevo',
                                                        text: 'Nuevo',
                                                        hidden: (localMaintenance == '1' ? true : false),
                                                        handler: function () {
                                                            LimpiarRubro();
                                                        }
                                                    },
                                                    {
                                                        xtype: 'button',
                                                        id: 'btGrabar',
                                                        text: 'Grabar',
                                                        hidden: (localMaintenance == '1' ? true : false),
                                                        handler: function () {
                                                            Grabar();
                                                        }
                                                    },
                                                    {
                                                        xtype: 'button',
                                                        id: 'btImprimir',
                                                        text: 'Imprimir',
                                                        handler: function () {
                                                            Imprimir();
                                                        }
                                                    },
                                                     {
                                                         xtype: 'button',
                                                         id: 'btClonar',
                                                         text: 'Clonar',
                                                         hidden: (localMaintenance == '1' ? true : false),
                                                         handler: function () {
                                                             Clonar();
                                                         }
                                                     },
                                                     {
                                                         xtype: 'button',
                                                         id: 'btEliminar',
                                                         text: 'Eliminar',
                                                         hidden: (localMaintenance == '1' ? true : false),
                                                         handler: function () {
                                                             deleteRubro();
                                                         }
                                                     },
                                                     {
                                                         xtype: 'button',
                                                         id: 'btActualizarPrecios',
                                                         text: 'Actualizar Precios',
                                                         hidden: (localMaintenance == '1' ? true : false),
                                                         handler: function () {
                                                             Ext.MessageBox.confirm('Confirmacion', 'Esta seguro de querer actualizar precios..Pienselo Bien..', doUpdateRubro);
                                                         }
                                                     }
                                                ]
                                            }
                                        ]
                                    }
                                ],
                            items: [
                                {
                                    xtype: 'panel',
                                    id: 'frmRubro',
                                    //disabled: true,
                                    layout: {
                                        type: 'border'
                                    },
                                    title: 'Datos Generales',
                                    items: [
                                        {
                                            xtype: 'panel',
                                            layout: {
                                                type: 'border'
                                            },
                                            region: 'center',
                                            items: [
                                                {
                                                    xtype: 'panel',
                                                    region: 'west',
                                                    split: true,
                                                    width: 720,
                                                    layout: {
                                                        type: 'border'
                                                    },
                                                    items: [
                                                        {
                                                            xtype: 'panel',
                                                            region: 'north',
                                                            items: [
                                                                {
                                                                    xtype: 'fieldset',
                                                                    //height: 200,
                                                                    margin: '3 3 3 3',
                                                                    layout: {
                                                                        columns: 1,
                                                                        type: 'table'
                                                                    },
                                                                    //region: 'west',
                                                                    region: 'north',
                                                                    title: 'Datos Generales',
                                                                    items: [
                                                                        {
                                                                            xtype: 'fieldcontainer',
                                                                            height: 25,
                                                                            layout: {
                                                                                columns: 3,
                                                                                type: 'table'
                                                                            },
                                                                            fieldLabel: '',
                                                                            items: [
                                                                                {
                                                                                    xtype: 'textfield',
                                                                                    id: 'txDescripcion',
                                                                                    margin: '0 3 0 0',
                                                                                    width: 500,
                                                                                    fieldLabel: 'Descripcion',
                                                                                    labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                                                    labelWidth: 70,
                                                                                    allowBlank: false
                                                                                    //disabled: true
                                                                                },
                                                                                {
                                                                                    xtype: 'textfield',
                                                                                    id: 'txRubroID',
                                                                                    margin: '0 3 0 0',
                                                                                    width: 50,
                                                                                    //fieldLabel: 'Descripcion',
                                                                                    labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                                                    //labelWidth: 30,
                                                                                    value: '-1',
                                                                                    disabled: true
                                                                                },
                                                                                {
                                                                                    xtype: 'checkboxfield',
                                                                                    labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                                                    id: 'chStatus',
                                                                                    margin: '0 35 0 0',
                                                                                    boxLabel: 'Activo',
                                                                                    checked: true
                                                                                }
                                                                            ]
                                                                        },
                                                                        {
                                                                            xtype: 'fieldcontainer',
                                                                            height: 25,
                                                                            layout: {
                                                                                columns: 4,
                                                                                type: 'table'
                                                                            },
                                                                            fieldLabel: '',
                                                                            items: [
                                                                                {
                                                                                    xtype: 'combobox',
                                                                                    id: 'cbUnidad',
                                                                                    margin: '0 0 0 0',
                                                                                    width: 150,
                                                                                    fieldLabel: 'Unidad Medida',
                                                                                    labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                                                    labelWidth: 70,
                                                                                    displayField: 'ShortDescription',
                                                                                    valueField: 'UnitRubroID',
                                                                                    queryMode: 'local',
                                                                                    editable: false,
                                                                                    //selectOnFocus: true,
                                                                                    forceSelection: true,
                                                                                    lazyRender: true,
                                                                                    store: StUnidad,
                                                                                    allowBlank: false
                                                                                },
                                                                                {
                                                                                    xtype: 'datefield',
                                                                                    id: 'txValidez',
                                                                                    margin: '0 0 0 10',
                                                                                    //height: 50,
                                                                                    width: 135,
                                                                                    fieldLabel: 'Fecha',
                                                                                    labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                                                    labelWidth: 40,
                                                                                    value: new Date(),
                                                                                    format: 'M Y',
                                                                                    maxValue: new Date(),
                                                                                    allowBlank: false
                                                                                    //disabledDays: [1,2,3,4,5]
                                                                                },
                                                                                {
                                                                                    xtype: 'textfield',
                                                                                    id: 'txCostosIndirectos',
                                                                                    margin: '0 0 0 10',
                                                                                    width: 160,
                                                                                    fieldLabel: 'Cost.Indirectos %',
                                                                                    labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                                                    labelWidth: 95,
                                                                                    allowBlank: false,
                                                                                    listeners: {
                                                                                        change: function (obj, newValue, oldValue, eOpts) {
                                                                                            Ext.getCmp('txCostosIU').setFieldLabel("Cost. Indirec. Utilidad(" + newValue + "%)");
                                                                                            recalculate();
                                                                                        }
                                                                                    }
                                                                                    //disabled: true
                                                                                }
                                                                            ]
                                                                        },
                                                                        {
                                                                            xtype: 'fieldcontainer',
                                                                            height: 25,
                                                                            layout: {
                                                                                columns: 3,
                                                                                type: 'table'
                                                                            },
                                                                            fieldLabel: '',
                                                                            items: [
                                                                                {
                                                                                    xtype: 'numberfield',
                                                                                    id: 'txRendimiento',
                                                                                    margin: '0 0 0 0',
                                                                                    width: 200,
                                                                                    fieldLabel: 'Rendimiento (Hras/Unidad)',
                                                                                    labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                                                    labelWidth: 70,
                                                                                    decimalPrecision: 8,
                                                                                    allowBlank: false,
                                                                                    listeners: {
                                                                                        //change: function (obj, newValue, oldValue, eOpts) {
                                                                                        blur: function (obj, eOpts) {
                                                                                            //Ext.getCmp('txCostosIU').setFieldLabel("Cost. Indirec. Utilidad(" + newValue + "%)");
                                                                                            loadStores();
                                                                                            recalculate();
                                                                                        }
                                                                                    }
                                                                                    //disabled: true
                                                                                },
                                                                                {
                                                                                    xtype: 'textfield',
                                                                                    id: 'txDetalle',
                                                                                    margin: '0 0 0 10',
                                                                                    width: 300,
                                                                                    fieldLabel: 'Detalle',
                                                                                    labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                                                    labelWidth: 45
                                                                                    //disabled: true
                                                                                }
                                                                            ]
                                                                        }
                                                                    ]
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            xtype: 'tabpanel',
                                                            activeTab: 0,
                                                            disabled: true,
                                                            id: 'tabCategorias',
                                                            region: 'center',
                                                            items: [
                                                                {
                                                                    xtype: 'panel',
                                                                    id: 'grEquipos',
                                                                    title: 'Equipos',
                                                                    layout: {
                                                                        type: 'border'
                                                                    },
                                                                    items: [//////////
                                                                        {
                                                                        xtype: 'panel',
                                                                        region: 'north',
                                                                        height: 68,
                                                                        items: [
                                                                                {
                                                                                    xtype: 'fieldset',
                                                                                    margin: '3 3 3 3',
                                                                                    height: 63,
                                                                                    title: 'Seleccionar Concepto',
                                                                                    layout: {
                                                                                        columns: 1,
                                                                                        type: 'table'
                                                                                    },
                                                                                    items: [
                                                                                        {
                                                                                            xtype: 'fieldcontainer',
                                                                                            height: 25,
                                                                                            layout: {
                                                                                                columns: 4,
                                                                                                type: 'table'
                                                                                            },
                                                                                            items: [
                                                                                                {
                                                                                                    xtype: 'combobox',
                                                                                                    id: 'cbConceptoE',
                                                                                                    width: 400,
                                                                                                    margin: '0 3 0 0',
                                                                                                    fieldLabel: 'Concepto',
                                                                                                    labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                                                                    labelWidth: 60,
                                                                                                    displayField: 'Description',
                                                                                                    valueField: 'ConceptID',
                                                                                                    queryMode: 'local',
                                                                                                    editable: true,
                                                                                                    //typeAhead: true,
                                                                                                    //selectOnFocus: true,
                                                                                                    forceSelection: true,
                                                                                                    lazyRender: true,
                                                                                                    store: StConceptoE
                                                                                                    //disabled: (localUserType == '0' ? 'true' : 'false')
                                                                                                },
                                                                                                {
                                                                                                    xtype: 'button',
                                                                                                    id: 'btADDConceptoE',
                                                                                                    text: '+',
                                                                                                    hidden: (localMaintenance == '1' ? true : false),
                                                                                                    //hidden: (localInspector == '0' && localAdministrator == '0' && localOversight == '0' ? true : false),
                                                                                                    handler: function () {
                                                                                                        addConcepto('1');
                                                                                                    }
                                                                                                },
                                                                                                {
                                                                                                    xtype: 'numberfield',
                                                                                                    id: 'txCantidadE',
                                                                                                    margin: '0 3 0 10',
                                                                                                    width: 130,
                                                                                                    fieldLabel: 'Cantidad',
                                                                                                    labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                                                                    labelWidth: 60
                                                                                                },
                                                                                                {
                                                                                                    xtype: 'button',
                                                                                                    id: 'btAgregarEQ',
                                                                                                    text: 'Agregar',
                                                                                                    hidden: (localMaintenance == '1' ? true : false),
                                                                                                    handler: function () {
                                                                                                        AgregarCE();
                                                                                                        loadStores();
                                                                                                        //calculateValues();
                                                                                                        recalculate();
                                                                                                    }
                                                                                                }
                                                                                            ]
                                                                                        }
                                                                                    ]
                                                                                }
                                                                            ]
                                                                    },
                                                                        gridEquipo
                                                                    ]
                                                                },
                                                                {
                                                                    xtype: 'panel',
                                                                    id: 'grManoObra',
                                                                    layout: {
                                                                        type: 'border'
                                                                    },
                                                                    title: 'Mano de Obra',
                                                                    items: [
                                                                        {
                                                                            xtype: 'panel',
                                                                            region: 'north',
                                                                            height: 68,
                                                                            items: [
                                                                                {
                                                                                    xtype: 'fieldset',
                                                                                    margin: '3 3 3 3',
                                                                                    height: 63,
                                                                                    title: 'Seleccionar Concepto',
                                                                                    layout: {
                                                                                        columns: 1,
                                                                                        type: 'table'
                                                                                    },
                                                                                    items: [
                                                                                        {
                                                                                            xtype: 'fieldcontainer',
                                                                                            height: 25,
                                                                                            layout: {
                                                                                                columns: 4,
                                                                                                type: 'table'
                                                                                            },
                                                                                            items: [
                                                                                                {
                                                                                                    xtype: 'combobox',
                                                                                                    id: 'cbConceptoMO',
                                                                                                    width: 400,
                                                                                                    margin: '0 3 0 0',
                                                                                                    fieldLabel: 'Concepto',
                                                                                                    labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                                                                    labelWidth: 60,
                                                                                                    displayField: 'Description',
                                                                                                    valueField: 'ConceptID',
                                                                                                    queryMode: 'local',
                                                                                                    editable: true,
                                                                                                    //selectOnFocus: true,
                                                                                                    forceSelection: true,
                                                                                                    lazyRender: true,
                                                                                                    store: StConceptoMO
                                                                                                    //disabled: (localUserType == '0' ? 'true' : 'false')
                                                                                                },
                                                                                                {
                                                                                                    xtype: 'button',
                                                                                                    id: 'btADDConceptoMO',
                                                                                                    text: '+',
                                                                                                    hidden: (localMaintenance == '1' ? true : false),
                                                                                                    //hidden: (localInspector == '0' && localAdministrator == '0' && localOversight == '0' ? true : false),
                                                                                                    handler: function () {
                                                                                                        addConcepto('2');
                                                                                                    }
                                                                                                },
                                                                                                {
                                                                                                    xtype: 'numberfield',
                                                                                                    id: 'txCantidadMO',
                                                                                                    margin: '0 3 0 10',
                                                                                                    width: 130,
                                                                                                    fieldLabel: 'Cantidad',
                                                                                                    labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                                                                    labelWidth: 60
                                                                                                },
                                                                                                {
                                                                                                    xtype: 'button',
                                                                                                    id: 'btAgregarMO',
                                                                                                    text: 'Agregar',
                                                                                                    hidden: (localMaintenance == '1' ? true : false),
                                                                                                    handler: function () {
                                                                                                        AgregarCMO();
                                                                                                        loadStores();
                                                                                                        //calculateValues();
                                                                                                        recalculate();
                                                                                                    }
                                                                                                }
                                                                                            ]
                                                                                        }
                                                                                    ]
                                                                                }
                                                                            ]
                                                                        },
                                                                        gridManoObra
                                                                    ]
                                                                },
                                                                {
                                                                    xtype: 'panel',
                                                                    id: 'grMateriales',
                                                                    layout: {
                                                                        type: 'border'
                                                                    },
                                                                    title: 'Materiales',
                                                                    items: [
                                                                        {
                                                                            xtype: 'panel',
                                                                            region: 'north',
                                                                            height: 68,
                                                                            items: [
                                                                                {
                                                                                    xtype: 'fieldset',
                                                                                    margin: '3 3 3 3',
                                                                                    height: 63,
                                                                                    title: 'Seleccionar Concepto',
                                                                                    layout: {
                                                                                        columns: 1,
                                                                                        type: 'table'
                                                                                    },
                                                                                    items: [
                                                                                        {
                                                                                            xtype: 'fieldcontainer',
                                                                                            height: 25,
                                                                                            layout: {
                                                                                                columns: 4,
                                                                                                type: 'table'
                                                                                            },
                                                                                            items: [
                                                                                                {
                                                                                                    xtype: 'combobox',
                                                                                                    id: 'cbConceptoMT',
                                                                                                    width: 400,
                                                                                                    margin: '0 3 0 0',
                                                                                                    fieldLabel: 'Concepto',
                                                                                                    labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                                                                    labelWidth: 60,
                                                                                                    displayField: 'Description',
                                                                                                    valueField: 'ConceptID',
                                                                                                    queryMode: 'local',
                                                                                                    editable: true,
                                                                                                    //selectOnFocus: true,
                                                                                                    forceSelection: true,
                                                                                                    lazyRender: true,
                                                                                                    store: StConceptoMT
                                                                                                    //disabled: (localUserType == '0' ? 'true' : 'false')
                                                                                                },
                                                                                                {
                                                                                                    xtype: 'button',
                                                                                                    id: 'btADDConceptoMT',
                                                                                                    text: '+',
                                                                                                    hidden: (localMaintenance == '1' ? true : false),
                                                                                                    //hidden: (localInspector == '0' && localAdministrator == '0' && localOversight == '0' ? true : false),
                                                                                                    handler: function () {
                                                                                                        addConcepto('3');
                                                                                                    }
                                                                                                },
                                                                                                {
                                                                                                    xtype: 'numberfield',
                                                                                                    id: 'txCantidadMT',
                                                                                                    margin: '0 3 0 10',
                                                                                                    width: 130,
                                                                                                    fieldLabel: 'Cantidad',
                                                                                                    labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                                                                    labelWidth: 60
                                                                                                },
                                                                                                {
                                                                                                    xtype: 'button',
                                                                                                    id: 'btAgregarMT',
                                                                                                    text: 'Agregar',
                                                                                                    hidden: (localMaintenance == '1' ? true : false),
                                                                                                    handler: function () {
                                                                                                        AgregarCMT();
                                                                                                        loadStores();
                                                                                                        //calculateValues();
                                                                                                        recalculate();
                                                                                                    }
                                                                                                }
                                                                                            ]
                                                                                        }
                                                                                    ]
                                                                                }
                                                                            ]
                                                                        },
                                                                        gridMateriales
                                                                    ]
                                                                },
                                                                {
                                                                    xtype: 'panel',
                                                                    id: 'grTransporte',
                                                                    layout: {
                                                                        type: 'border'
                                                                    },
                                                                    title: 'Transporte',
                                                                    items: [
                                                                        {
                                                                            xtype: 'panel',
                                                                            region: 'north',
                                                                            height: 68,
                                                                            items: [
                                                                                {
                                                                                    xtype: 'fieldset',
                                                                                    margin: '3 3 3 3',
                                                                                    height: 63,
                                                                                    title: 'Seleccionar Concepto',
                                                                                    layout: {
                                                                                        columns: 1,
                                                                                        type: 'table'
                                                                                    },
                                                                                    items: [
                                                                                        {
                                                                                            xtype: 'fieldcontainer',
                                                                                            height: 25,
                                                                                            layout: {
                                                                                                columns: 4,
                                                                                                type: 'table'
                                                                                            },
                                                                                            items: [
                                                                                                {
                                                                                                    xtype: 'combobox',
                                                                                                    id: 'cbConceptoT',
                                                                                                    width: 400,
                                                                                                    margin: '0 3 0 0',
                                                                                                    fieldLabel: 'Concepto',
                                                                                                    labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                                                                    labelWidth: 60,
                                                                                                    displayField: 'Description',
                                                                                                    valueField: 'ConceptID',
                                                                                                    queryMode: 'local',
                                                                                                    editable: true,
                                                                                                    //selectOnFocus: true,
                                                                                                    forceSelection: true,
                                                                                                    lazyRender: true,
                                                                                                    store: StConceptoT
                                                                                                    //disabled: (localUserType == '0' ? 'true' : 'false')
                                                                                                },
                                                                                                {
                                                                                                    xtype: 'button',
                                                                                                    id: 'btADDConceptoT',
                                                                                                    text: '+',
                                                                                                    hidden: (localMaintenance == '1' ? true : false),
                                                                                                    //hidden: (localInspector == '0' && localAdministrator == '0' && localOversight == '0' ? true : false),
                                                                                                    handler: function () {
                                                                                                        addConcepto('4');
                                                                                                    }
                                                                                                },
                                                                                                {
                                                                                                    xtype: 'numberfield',
                                                                                                    id: 'txCantidadT',
                                                                                                    margin: '0 3 0 10',
                                                                                                    width: 130,
                                                                                                    fieldLabel: 'Cantidad',
                                                                                                    labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                                                                    labelWidth: 60
                                                                                                },
                                                                                                {
                                                                                                    xtype: 'button',
                                                                                                    id: 'btAgregarT',
                                                                                                    text: 'Agregar',
                                                                                                    hidden: (localMaintenance == '1' ? true : false),
                                                                                                    handler: function () {
                                                                                                        AgregarCT();
                                                                                                        loadStores();
                                                                                                        //calculateValues();
                                                                                                        recalculate();
                                                                                                    }
                                                                                                }
                                                                                            ]
                                                                                        }
                                                                                    ]
                                                                                }
                                                                            ]
                                                                        },
                                                                        gridTransporte
                                                                    ]
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                {
                                                    xtype: 'panel',
                                                    region: 'center',
                                                    items: [
                                                        {
                                                            xtype: 'fieldset',
                                                            //height: 100,
                                                            margin: '3 3 3 3',
                                                            //region: 'west',
                                                            //region: 'center',
                                                            title: 'Totales',
                                                            items: [
                                                                {
                                                                    xtype: 'fieldcontainer',
                                                                    height: 25,
                                                                    layout: {
                                                                        columns: 1,
                                                                        type: 'table'
                                                                    },
                                                                    fieldLabel: '',
                                                                    items: [
                                                                        {
                                                                            xtype: 'textfield',
                                                                            id: 'txTotalCD',
                                                                            margin: '0 3 0 0',
                                                                            width: 200,
                                                                            fieldLabel: 'Total Costos Directos X=(M+N+O+P)',
                                                                            labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                                            labelWidth: 115,
                                                                            disabled: true
                                                                        }
                                                                    ]
                                                                },
                                                                {
                                                                    xtype: 'fieldcontainer',
                                                                    height: 25,
                                                                    layout: {
                                                                        columns: 1,
                                                                        type: 'table'
                                                                    },
                                                                    fieldLabel: '',
                                                                    items: [
                                                                        {
                                                                            xtype: 'textfield',
                                                                            id: 'txCostosIU',
                                                                            margin: '0 3 0 0',
                                                                            width: 200,
                                                                            fieldLabel: 'Cost. Indirec. Utilidad(X%)',
                                                                            labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                                            labelWidth: 115,
                                                                            disabled: true
                                                                        }

                                                                    ]
                                                                },
                                                                {
                                                                    xtype: 'fieldcontainer',
                                                                    height: 25,
                                                                    layout: {
                                                                        columns: 1,
                                                                        type: 'table'
                                                                    },
                                                                    fieldLabel: '',
                                                                    items: [
                                                                        {
                                                                            xtype: 'textfield',
                                                                            id: 'txTotalRubro',
                                                                            margin: '0 3 0 0',
                                                                            width: 200,
                                                                            fieldLabel: 'Cost. Total Rubro',
                                                                            labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                                            labelWidth: 115,
                                                                            disabled: true
                                                                        }
                                                                    ]
                                                                },
                                                                {
                                                                    xtype: 'fieldcontainer',
                                                                    height: 25,
                                                                    layout: {
                                                                        columns: 1,
                                                                        type: 'table'
                                                                    },
                                                                    fieldLabel: '',
                                                                    items: [
                                                                        {
                                                                            xtype: 'textfield',
                                                                            id: 'txValorPropuesto',
                                                                            margin: '0 3 0 0',
                                                                            width: 200,
                                                                            fieldLabel: 'Valor Propuesto',
                                                                            labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                                            labelWidth: 115,
                                                                            disabled: true
                                                                        }
                                                                    ]
                                                                }
                                                            ]
                                                        }
                                                      ]
                                                }
                                            ]
                                        },
                                        {
                                            xtype: 'panel',
                                            height: 70,
                                            region: 'south',
                                            items: [
                                                {
                                                    xtype: 'fieldset',
                                                    height: 55,
                                                    margin: '3 3 3 3',
                                                    layout: {
                                                        columns: 4,
                                                        type: 'table'
                                                    },
                                                    title: 'Auditoria',
                                                    items: [
                                                        {
                                                            xtype: 'textfield',
                                                            id: 'txUsuarioIR',
                                                            margin: '0 3 0 0',
                                                            width: 200,
                                                            fieldLabel: 'Usuario I.',
                                                            labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                            labelWidth: 70,
                                                            disabled: true
                                                        },
                                                        {
                                                            xtype: 'textfield',
                                                            id: 'txFechaIR',
                                                            margin: '0 3 0 0',
                                                            width: 200,
                                                            fieldLabel: 'Fecha I.',
                                                            labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                            labelWidth: 70,
                                                            disabled: true
                                                        },
                                                        {
                                                            xtype: 'textfield',
                                                            id: 'txUsuarioMR',
                                                            margin: '0 3 0 0',
                                                            width: 200,
                                                            fieldLabel: 'Usuario M.',
                                                            labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                            labelWidth: 70,
                                                            disabled: true
                                                        },
                                                        {
                                                            xtype: 'textfield',
                                                            id: 'txFechaMR',
                                                            margin: '0 3 0 0',
                                                            width: 200,
                                                            fieldLabel: 'Fecha M.',
                                                            labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                            labelWidth: 70,
                                                            disabled: true
                                                        }
                                                    ]
                                                }
                                            ]
                                        }
                                    ]
                                },
                                {
                                    xtype: 'panel',
                                    layout: 'fit',
                                    title: 'Especificaciones Técnicas',
                                    items: [
                                        {
                                            xtype: 'fieldset',
                                            //height: 100,
                                            margin: '3 3 3 3',
                                            //region: 'west',
                                            //region: 'center',
                                            layout: 'fit',
                                            title: 'Especificaciones Técnicas',
                                            items: [
                                                {
                                                    xtype: 'fieldcontainer',
                                                    //height: 25,
                                                    layout: 'fit',
                                                    fieldLabel: '',
                                                    items: [
                                                    /*{
                                                    xtype: 'htmleditor',
                                                    id: 'txSpecification',
                                                    height: 200,
                                                    renderTo: Ext.getBody(),
                                                    enableColors: false,
                                                    enableAlignments: false,
                                                    defaultValue: ''
                                                    }*/
                                                        {
                                                        xtype: 'textareafield',
                                                        id: 'txSpecification'
                                                    }
                                                    ]
                                                }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ];

            me.callParent(arguments);
        }
    });

    Ext.override(Ext.form.HtmlEditor, {
        onEditorEvent: function (e) {
            return;
            Ext.getDoc().trigger('mousedown', e);
            this.updateToolbar();
        }
    });

    var f = Ext.create('MyApp.view.ui.MyViewport', {
        renderTo: Ext.getBody()
    });

    Ext.getCmp('txDescripcion').focus();

    function Grabar() {
        ponerMayuscula(Ext.getCmp('frmRubro'));
        if (Ext.getCmp('txDescripcion').getValue() == '' || Ext.getCmp('txDescripcion').getValue() == null) {
            Ext.Msg.show({ title: 'Error', msg: 'Descripción no puede ser vacía', buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR })
            Ext.getCmp('txDescripcion').focus();
            return;
        }
        if (Ext.getCmp('cbUnidad').getValue() == '' || Ext.getCmp('cbUnidad').getValue() == null) {
            Ext.Msg.show({ title: 'Error', msg: 'Debe seleccionar una unidad de medida', buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR })
            Ext.getCmp('cbUnidad').focus();
            return;
        }
        if (Ext.getCmp('txValidez').getValue() == '' || Ext.getCmp('txValidez').getValue() == null) {
            Ext.Msg.show({ title: 'Error', msg: 'Debe seleccionar una validez para el Precio Unitario', buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR })
            Ext.getCmp('txValidez').focus();
            return;
        }
        if (Ext.getCmp('txCostosIndirectos').getValue() == '' || Ext.getCmp('txCostosIndirectos').getValue() == null) {
            Ext.Msg.show({ title: 'Error', msg: 'Ingrese el % de los Costos Indirectos', buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR })
            Ext.getCmp('txCostosIndirectos').focus();
            return;
        }
        if (Ext.getCmp('txRendimiento').getValue() == '' || Ext.getCmp('txRendimiento').getValue() == null) {
            Ext.Msg.show({ title: 'Error', msg: 'Ingrese el Rendimiento', buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR })
            Ext.getCmp('txRendimiento').focus();
            return;
        }
        Ext.getCmp('btGrabar').disable();
        Ext.Ajax.request({
            url: '../ModuloBase/RubroClass.php',
            method: 'POST',
            params: {
                Opcion: 'GRABAR',
                RubroID: Ext.getCmp('txRubroID').getValue(),
                Status: Ext.getCmp('chStatus').getValue(),
                UnitID: Ext.getCmp('cbUnidad').getValue(),
                Description: Ext.getCmp('txDescripcion').getValue(),
                RevisationDate: Ext.getCmp('txValidez').getValue(),
                NoDirectCost: Ext.getCmp('txCostosIndirectos').getValue(),
                Performance: Ext.getCmp('txRendimiento').getValue(),
                Detail: Ext.getCmp('txDetalle').getValue(),
                PartialEquipment: Ext.getCmp('txParcialE').getValue(),
                PartialLabor: Ext.getCmp('txParcialMO').getValue(),
                PartialMaterial: Ext.getCmp('txParcialMT').getValue(),
                PartialTransport: Ext.getCmp('txParcialT').getValue(),
                DirectCost: Ext.getCmp('txTotalCD').getValue(),
                NoDirectCostUtility: Ext.getCmp('txCostosIU').getValue(),
                TotalCost: Ext.getCmp('txTotalRubro').getValue(),
                ProposedValue: Ext.getCmp('txValorPropuesto').getValue(),
                Specification: Ext.getCmp('txSpecification').getValue()

            },
            success: function (result, request) {
                Ext.getCmp('btGrabar').enable();
                var jsonData = Ext.decode(result.responseText);
                DobleClickRubro(Ext.getCmp('txRubroID').getValue() == '-1' ? jsonData.LastCode : Ext.getCmp('txRubroID').getValue());
                if (jsonData.success == true) {
                    Ext.Msg.show({ title: '.::Mensaje del Sistema', msg: (Ext.getCmp('txRubroID').getValue() == '-1' ? 'Rubro Ingresado Correctamente' : 'Rubro Modificado Correctamente'), buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });
                }
                else {
                    Ext.Msg.show({ title: '.::Mensaje del Sistema', msg: 'Fallo Ingreso de Rubro', buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR });
                }
            },
            failure: function (result, request) {
                Ext.getCmp('btGrabar').enable();
                resultado = false;
                if (result.failureType == 'server') {
                    Ext.Msg.alert('.::Mensaje del Sistema::.!', "Problemas con el Servidor...Consulte con el Administrador");
                }
                else {
                    Ext.Msg.alert('Problemas con el Servidor...', "Error no Identificado...Consulte con el Administrador");
                }
            }
        });
    }
    ////////// despliega un aviso y en un tiempo determinado desabilitando la pantalla
    Ext.getCmp('btAgregarEQ').on('click', function () {
        Ext.MessageBox.show({
            msg: 'Recalculando Totales, por favor espere...Luego de esto Grabe',
            progressText: 'Saving...',
            width: 300,
            wait: true,
            waitConfig: { interval: 200 },
            icon: 'ext-mb-download'/*, //custom class in msg-box.html
             animateTarget: 'mb7'*/
        });
        setTimeout(function () {
            //This simulates a long-running operation like a database save or XHR call.
            //In real code, this would be in a callback function.
            Ext.MessageBox.hide();
            /*Ext.example.msg('Done', 'Los datos fueron grabados!');*/
        }, 3000);
    });

    Ext.getCmp('btAgregarMO').on('click', function () {
        Ext.MessageBox.show({
            msg: 'Recalculando Totales, por favor espere...Luego de esto Grabe',
            progressText: 'Saving...',
            width: 300,
            wait: true,
            waitConfig: { interval: 200 },
            icon: 'ext-mb-download'
        });
        setTimeout(function () { Ext.MessageBox.hide(); }, 3000);
    });

    Ext.getCmp('btAgregarMT').on('click', function () {
        Ext.MessageBox.show({
            msg: 'Recalculando Totales, por favor espere...Luego de esto Grabe',
            progressText: 'Saving...',
            width: 300,
            wait: true,
            waitConfig: { interval: 200 },
            icon: 'ext-mb-download'
        });
        setTimeout(function () { Ext.MessageBox.hide(); }, 3000);
    });

    Ext.getCmp('btAgregarT').on('click', function () {
        Ext.MessageBox.show({
            msg: 'Recalculando Totales, por favor espere...Luego de esto Grabe',
            progressText: 'Saving...',
            width: 300,
            wait: true,
            waitConfig: { interval: 200 },
            icon: 'ext-mb-download'
        });
        setTimeout(function () { Ext.MessageBox.hide(); }, 3000);
    });

    function AgregarCE() {
        if (Ext.getCmp('cbConceptoE').getValue() == null || Ext.getCmp('txCantidadE').getValue() == null || Ext.getCmp('txCantidadE').getValue() == 0) {
            Ext.Msg.show({ title: 'Error', msg: 'Para Agregar debe Completar los datos de Equipos', buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR });
            return;
        }
        Ext.Ajax.request({
            url: '../ModuloBase/RubroClass.php',
            method: 'POST',
            params: {
                Opcion: 'AGREGAR',
                ConceptRubroID: -1,
                RubroID: Ext.getCmp('txRubroID').getValue(),
                ConceptID: Ext.getCmp('cbConceptoE').getValue(),
                PartialLabor: Ext.getCmp('txParcialMO').getValue(),
                Categoria: 1,
                Cantidad: Ext.getCmp('txCantidadE').getValue(),
                Rendimiento: Ext.getCmp('txRendimiento').getValue()
            },
            success: function (result, request) {
                var jsonData = Ext.decode(result.responseText);
                if (jsonData.success == true) {
                    //Ext.Msg.show({ title: '.::Mensaje del Sistema', msg: 'Se Ingreso Correctamente el concepto', buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });
                    StEquipo.load({ params: { Category: 1, RubroID: Ext.getCmp('txRubroID').getValue()} });
                }
                else {
                    Ext.Msg.show({ title: '.::Mensaje del Sistema', msg: 'Fallo Ingreso de Concepto', buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR });
                }
            },
            failure: function (result, request) {
                resultado = false;
                if (result.failureType == 'server') {
                    Ext.Msg.alert('.::Mensaje del Sistema::.!', "Problemas con el Servidor...Consulte con el Administrador");
                }
                else {
                    Ext.Msg.alert('Problemas con el Servidor...', "Error no Identificado...Consulte con el Administrador");
                }
            }
        })
    }

    function AgregarCMO() {
        if (Ext.getCmp('cbConceptoMO').getValue() == null || Ext.getCmp('txCantidadMO').getValue() == null || Ext.getCmp('txCantidadMO').getValue() == 0) {
            Ext.Msg.show({ title: 'Error', msg: 'Para Agregar debe Completar los datos de Mano de Obra', buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR });
            return;
        }
        Ext.Ajax.request({
            url: '../ModuloBase/RubroClass.php',
            method: 'POST',
            params: {
                Opcion: 'AGREGAR',
                ConceptRubroID: -1,
                RubroID: Ext.getCmp('txRubroID').getValue(),
                ConceptID: Ext.getCmp('cbConceptoMO').getValue(),
                PartialLabor: Ext.getCmp('txParcialMO').getValue(),
                Categoria: 2,
                Cantidad: Ext.getCmp('txCantidadMO').getValue(),
                Rendimiento: Ext.getCmp('txRendimiento').getValue()
            },
            success: function (result, request) {
                var jsonData = Ext.decode(result.responseText);
                //DobleClickRubro(Ext.getCmp('txRubroID').getValue() == '-1' ? jsonData.LastCode : Ext.getCmp('txRubroID').getValue());
                if (jsonData.success == true) {
                    StManoObra.load({ params: { Category: 2, RubroID: Ext.getCmp('txRubroID').getValue()} });
                }
                else {
                    Ext.Msg.show({ title: '.::Mensaje del Sistema', msg: 'Fallo Ingreso de Concepto', buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR });

                }
            },
            failure: function (result, request) {
                resultado = false;
                if (result.failureType == 'server') {
                    Ext.Msg.alert('.::Mensaje del Sistema::.!', "Problemas con el Servidor...Consulte con el Administrador");
                }
                else {
                    Ext.Msg.alert('Problemas con el Servidor...', "Error no Identificado...Consulte con el Administrador");
                }
            }
        })
    }

    function AgregarCMT() {
        if (Ext.getCmp('cbConceptoMT').getValue() == null || Ext.getCmp('txCantidadMT').getValue() == null || Ext.getCmp('txCantidadMT').getValue() == 0) {
            Ext.Msg.show({ title: 'Error', msg: 'Para Agregar debe Completar los datos de Materiales', buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR });
            return;
        }
        Ext.Ajax.request({
            url: '../ModuloBase/RubroClass.php',
            method: 'POST',
            params: {
                Opcion: 'AGREGAR',
                ConceptRubroID: -1,
                RubroID: Ext.getCmp('txRubroID').getValue(),
                ConceptID: Ext.getCmp('cbConceptoMT').getValue(),
                PartialLabor: Ext.getCmp('txParcialMO').getValue(),
                Categoria: 3,
                Cantidad: Ext.getCmp('txCantidadMT').getValue(),
                Rendimiento: Ext.getCmp('txRendimiento').getValue()
            },
            success: function (result, request) {
                var jsonData = Ext.decode(result.responseText);
                //DobleClickRubro(Ext.getCmp('txRubroID').getValue() == '-1' ? jsonData.LastCode : Ext.getCmp('txRubroID').getValue());
                if (jsonData.success == true) {
                    StMateriales.load({ params: { Category: 3, RubroID: Ext.getCmp('txRubroID').getValue()} });
                }
                else {
                    Ext.Msg.show({ title: '.::Mensaje del Sistema', msg: 'Fallo Ingreso de Concepto', buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR });

                }
            },
            failure: function (result, request) {
                resultado = false;
                if (result.failureType == 'server') {
                    Ext.Msg.alert('.::Mensaje del Sistema::.!', "Problemas con el Servidor...Consulte con el Administrador");
                }
                else {
                    Ext.Msg.alert('Problemas con el Servidor...', "Error no Identificado...Consulte con el Administrador");
                }
            }
        })
    }

    function AgregarCT() {

        if (Ext.getCmp('cbConceptoT').getValue() == null || Ext.getCmp('txCantidadT').getValue() == null || Ext.getCmp('txCantidadT').getValue() == 0) {
            Ext.Msg.show({ title: 'Error', msg: 'Para Agregar debe Completar los datos de Transporte', buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR });
            return;
        }

        Ext.Ajax.request({
            url: '../ModuloBase/RubroClass.php',
            method: 'POST',
            params: {
                Opcion: 'AGREGAR',
                ConceptRubroID: -1,
                RubroID: Ext.getCmp('txRubroID').getValue(),
                ConceptID: Ext.getCmp('cbConceptoT').getValue(),
                PartialLabor: Ext.getCmp('txParcialMO').getValue(),
                Categoria: 4,
                Cantidad: Ext.getCmp('txCantidadT').getValue(),
                Rendimiento: Ext.getCmp('txRendimiento').getValue()
            },
            success: function (result, request) {
                var jsonData = Ext.decode(result.responseText);
                //DobleClickRubro(Ext.getCmp('txRubroID').getValue() == '-1' ? jsonData.LastCode : Ext.getCmp('txRubroID').getValue());
                if (jsonData.success == true) {
                    StTransporte.load({ params: { Category: 4, RubroID: Ext.getCmp('txRubroID').getValue()} });
                }
                else {
                    Ext.Msg.show({ title: '.::Mensaje del Sistema', msg: 'Fallo Ingreso de Concepto', buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR });

                }
            },
            failure: function (result, request) {
                resultado = false;
                if (result.failureType == 'server') {
                    Ext.Msg.alert('.::Mensaje del Sistema::.!', "Problemas con el Servidor...Consulte con el Administrador");
                }
                else {
                    Ext.Msg.alert('Problemas con el Servidor...', "Error no Identificado...Consulte con el Administrador");
                }
            }
        })
    }

    function deleteConceptRubro(category, ConceptoRubroID) {
        Ext.MessageBox.show({
            msg: 'Recalculando totales, por favor esperar...',
            progressText: 'Recalculando...',
            width: 300,
            wait: true,
            waitConfig: { interval: 200 },
            icon: 'ext-mb-download', //custom class in msg-box.html
            animEl: 'mb7'
        });
        setTimeout(function () { Ext.MessageBox.hide(); }, 2000);
        Ext.Ajax.request
   		    ({
   		        url: '../ModuloBase/RubroClass.php',
   		        method: 'POST',
   		        params: {
   		            Opcion: 'CONCEPTORUBRODELETE',
   		            ConceptRubroID: ConceptoRubroID
   		        },
   		        success: function (result, request) {
   		            var jsonData = Ext.decode(result.responseText);
   		            loadStores();
   		            recalculate();
   		        },
   		        failure: function (result, request) {
   		            if (result.failureType == 'server') {
   		                Ext.Msg.alert('.::Mensaje del Sistema::.!', "Problemas con el Servidor...Consulte con el Administrador");
   		            }
   		            else {
   		                Ext.Msg.alert('Problemas con el Servidor...', "Error no Identificado...Consulte con el Administrador");
   		            }
   		        }
   		    });

    }
    function saveConcept(e, action, category, categoria) {
        switch (action) {

            case "CONCEPTSAVE":
                Ext.MessageBox.show({
                    msg: 'Recalculando totales, por favor esperar...',
                    progressText: 'Recalculando...',
                    width: 300,
                    wait: true,
                    waitConfig: { interval: 200 },
                    icon: 'ext-mb-download', //custom class in msg-box.html
                    animEl: 'mb7'
                });
                setTimeout(function () { Ext.MessageBox.hide(); }, 2000);
                Ext.Ajax.request
   		            ({
   		                url: '../ModuloBase/RubroClass.php',
   		                method: 'POST',
   		                params: {
   		                    Opcion: 'AGREGAR',
   		                    ConceptRubroID: e.grid.columns[1].field.originalValue,
   		                    PartialLabor: Ext.getCmp('txParcialMO').getValue(),
   		                    Categoria: categoria,
   		                    Cantidad: (category == 'MATERIALES' || category == 'TRANSPORTE' ? e.grid.columns[4].field.lastValue : e.grid.columns[3].field.lastValue),
   		                    Rendimiento: Ext.getCmp('txRendimiento').getValue()
   		                },
   		                success: function (result, request) {
   		                    var jsonData = Ext.decode(result.responseText);
   		                    loadStores();
   		                    recalculate();
   		                },
   		                failure: function (result, request) {
   		                    if (result.failureType == 'server') {
   		                        Ext.Msg.alert('.::Mensaje del Sistema::.!', "Problemas con el Servidor...Consulte con el Administrador");
   		                    }
   		                    else {
   		                        Ext.Msg.alert('Problemas con el Servidor...', "Error no Identificado...Consulte con el Administrador");
   		                    }
   		                }
   		            });
                break;
        }
    };

    function LimpiarRubro() {
        Ext.getCmp('tabRubro').setTitle("Rubro: __NEW__");
        Ext.getCmp('tabCategorias').disable();
        Ext.getCmp('txRubroID').setValue('-1');
        Ext.getCmp('txDescripcion').setValue('');
        Ext.getCmp('chStatus').setValue(true);
        Ext.getCmp('cbUnidad').setValue('0');
        Ext.getCmp('txValidez').setValue('');
        Ext.getCmp('txCostosIndirectos').setValue('');
        Ext.getCmp('txRendimiento').setValue('');
        Ext.getCmp('txDetalle').setValue('');
        Ext.getCmp('txParcialE').setValue('0');
        Ext.getCmp('txParcialMO').setValue('0');
        Ext.getCmp('txParcialMT').setValue('0');
        Ext.getCmp('txParcialT').setValue('0');
        Ext.getCmp('txTotalCD').setValue('0');
        Ext.getCmp('txCostosIU').setValue('0');
        Ext.getCmp('txTotalRubro').setValue('0');
        Ext.getCmp('txValorPropuesto').setValue('0');
        Ext.getCmp('txSpecification').setValue('<b>a) Definición</b>\n\n\n<b>a) Procedimiento de Trabajo.</b>\n\n\n<b>c) Medición y pago</b>\n\n\n'); 

        Ext.getCmp('txUsuarioIR').setValue('');
        Ext.getCmp('txFechaIR').setValue('');
        Ext.getCmp('txUsuarioMR').setValue('');
        Ext.getCmp('txFechaMR').setValue('');
        StEquipo.data.removeAll();
        StManoObra.data.removeAll();
        StMateriales.data.removeAll();
        StTransporte.data.removeAll();
        loadStores();
    }

    function loadStores() {
        var rubroID = Ext.getCmp('txRubroID').getValue();
        StManoObra.load({ params: { Category: 2, RubroID: rubroID} });
        StMateriales.load({ params: { Category: 3, RubroID: rubroID} });
        StTransporte.load({ params: { Category: 4, RubroID: rubroID} });
        StEquipo.load({ params: { Category: 1, RubroID: rubroID} });
    }

    var calcFunction = function () { calculateValues(); };
    function calculateValues() {
        var val = parseFloat(Ext.getCmp('txParcialE').getValue()) + parseFloat(Ext.getCmp('txParcialMO').getValue()) + parseFloat(Ext.getCmp('txParcialMT').getValue()) + parseFloat(Ext.getCmp('txParcialT').getValue());

        var CostIndirectU = (val * Ext.getCmp('txCostosIndirectos').getValue()) / 100;
        var Total = val + CostIndirectU;

        Ext.getCmp('txTotalCD').setValue(val.toFixed(2));
        Ext.getCmp('txCostosIU').setValue(CostIndirectU.toFixed(2));
        Ext.getCmp('txTotalRubro').setValue(Total.toFixed(2));
        Ext.getCmp('txValorPropuesto').setValue(Total.toFixed(2));

    };

    function recalculate() {
        ref = setTimeout(calcFunction, 2000);
        setTimeout("clearInterval(" + ref + ")", 2200);
    };

    function doDeleteRubro(button) {
        if (button != 'yes') return;
        Ext.Ajax.request({
            url: '../ModuloBase/RubroClass.php',
            method: 'POST',
            params: {
                Opcion: 'DELETERUBRO',
                RubroID: Ext.getCmp('txRubroID').getValue()

            },
            success: function (result, request) {
                var jsonData = Ext.decode(result.responseText);
                //DobleClickRubro(jsonData.LastCode);
                //pos = grBusqueda.getSelectionModel().getSelection();
                doBuscar();
                //grBusqueda.getSelectionModel().select(pos[0].index);
                LimpiarRubro();
                if (jsonData.success == true) {
                    Ext.Msg.show({ title: '.::Mensaje del Sistema', msg: 'Rubro Eliminado Correctamente', buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });
                }
                else {
                    Ext.Msg.show({ title: '.::Mensaje del Sistema', msg: 'Fallo Eliminación de Rubro', buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR });
                }
            },
            failure: function (result, request) {
                resultado = false;
                if (result.failureType == 'server') {
                    Ext.Msg.alert('.::Mensaje del Sistema::.!', "Problemas con el Servidor...Consulte con el Administrador");
                }
                else {
                    Ext.Msg.alert('Problemas con el Servidor...', "Error no Identificado...Consulte con el Administrador");
                }
            }
        });
    }
    function deleteRubro() {
        Ext.Msg.confirm('Confirmación', 'Seguro de eliminar este Rubro?', doDeleteRubro);
    }
    function doClone(button, message) {
        if (button != 'ok') return;
        Ext.Ajax.request({
            url: '../ModuloBase/RubroClass.php',
            method: 'POST',
            params: {
                Opcion: 'CLONAR',
                RubroID: Ext.getCmp('txRubroID').getValue(),
                NewDescription: message.toUpperCase()

            },
            success: function (result, request) {
                var jsonData = Ext.decode(result.responseText);
                DobleClickRubro(jsonData.LastCode);
                recalculate();
                if (jsonData.success == true) {
                    Ext.Msg.show({ title: '.::Mensaje del Sistema', msg: 'Rubro Clonado Correctamente', buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });
                }
                else {
                    Ext.Msg.show({ title: '.::Mensaje del Sistema', msg: 'Fallo Clonación de Rubro', buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR });

                }
            },
            failure: function (result, request) {
                resultado = false;
                if (result.failureType == 'server') {
                    Ext.Msg.alert('.::Mensaje del Sistema::.!', "Problemas con el Servidor...Consulte con el Administrador");
                }
                else {
                    Ext.Msg.alert('Problemas con el Servidor...', "Error no Identificado...Consulte con el Administrador");
                }
            }
        });
    }
    function Clonar() {
        Ext.MessageBox.prompt('Clonar Precio Unitario.', 'Descripción:', doClone, window, false, Ext.getCmp('txDescripcion').getValue());

    }
    function Imprimir() {
        Ext.MessageBox.show({
            msg: 'Generando Precio Unitario, por favor esperar...',
            progressText: 'Generando...',
            width: 300,
            wait: true,
            waitConfig: { interval: 200 },
            icon: 'ext-mb-download', //custom class in msg-box.html
            animEl: 'mb7'
        });

        valueToLetters = (Ext.getCmp('txValorPropuesto').getValue() > 1.0 ?
                                            covertirNumLetras(parseFloat(Ext.getCmp('txValorPropuesto').getValue()).toFixed(2)) :
                                            (parseFloat(Ext.getCmp('txValorPropuesto').getValue()) * 100) + '/100 DOLAR DE LOS ESTADOS UNIDOS DE AMERICA'
                          );
        //alert(valueToLetters);
        Ext.Ajax.request
   		({
   		    url: '../General/toPDFReports.php',
   		    method: 'POST',
   		    params: {
   		        Opcion: 'RUBRO',
   		        RubroID: Ext.getCmp('txRubroID').getValue(),
   		        TotalLetras: valueToLetters
   		        //TotalLetras: getNumberLiteral(parseFloat(Ext.getCmp('txValorPropuesto').getValue()).toFixed(2))

   		    },
   		    success: function (result, request) {
   		        Ext.MessageBox.hide();
   		        var jsonData = Ext.decode(result.responseText);
   		        if (jsonData.success == true) {
   		            var URL = jsonData.Datos;
   		            window.open(URL, "_BLANK", "width=480,height=600,scrollbars=YES,resizable=YES");
   		        }
   		        else {
   		            Ext.Msg.show({ title: '.::Mensaje del Sistema::.', msg: "Error al general Precio Unitario...Por Favor Verifique" + "<br>...Gracias!!!", buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR });

   		        }
   		    },
   		    failure: function (result, request) {
   		        Ext.MessageBox.hide();
   		        if (result.failureType == 'server') {
   		            Ext.Msg.alert('.::Mensaje del Sistema::.!', "Problemas con el Servidor...Consulte con el Administrador");
   		        }
   		        else {
   		            Ext.Msg.alert('Problemas con el Servidor...', "Error no Identificado...Consulte con el Administrador");
   		        }
   		    }
   		});
    }
    function doBuscar() {
        StBusqueda.data.removeAll();
        StBusqueda.load({ params: { DescripcionFilsc: Ext.getCmp('txDescripcionB').getValue(),
            UsuarioFilsc: Ext.getCmp('cbUsuarioB').getValue(),
            UnidadFilsc: Ext.getCmp('cbUnidadB').getValue()
        }
        });
    }
    var ponerMayuscula = function (obj) {
        obj.items.each(function (item, index, length) {
            if (item instanceof Ext.form.TextField) {
                if (item.xtype == 'textfield')
                    item.setValue(item.getValue().toUpperCase());
            }
            if (item.items)
                ponerMayuscula(item);
        });
    };

    function doImprimir() {
        Ext.MessageBox.show({
            msg: 'Generando Reporte, por favor esperar...',
            progressText: 'Generando...',
            width: 300,
            wait: true,
            waitConfig: { interval: 200 },
            icon: 'ext-mb-download', //custom class in msg-box.html
            animEl: 'mb7'
        });

        Ext.Ajax.request
   		    ({
   		        timeout: 1960000,
   		        url: '../General/toPDFReports.php',
   		        method: 'POST',
   		        params: {
   		            Opcion: 'ReporteRubros',
   		            DescripcionFilsc: Ext.getCmp('txDescripcionB').getValue(),
   		            UsuarioFilsc: Ext.getCmp('cbUsuarioB').getValue(),
   		            UnidadFilsc: Ext.getCmp('cbUnidadB').getValue()
   		        },
   		        success: function (result, request) {
   		            Ext.MessageBox.hide();
   		            var jsonData = Ext.decode(result.responseText);
   		            if (jsonData.success == true) {
   		                var URL = jsonData.Datos;
   		                window.open(URL, "_BLANK", "width=480,height=600,scrollbars=YES,resizable=YES");
   		            }
   		            else {
   		                Ext.Msg.show({ title: '.::Mensaje del Sistema::.', msg: "Error al Generar documento para impresión...Por Favor Verifique" + "<br>...Gracias!!!", buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR });

   		            }
   		        },
   		        failure: function (result, request) {
   		            Ext.MessageBox.hide();
   		            if (result.failureType == 'server') {
   		                Ext.Msg.alert('.::Mensaje del Sistema::.!', "Problemas con el Servidor...Consulte con el Administrador");
   		            }
   		            else {
   		                Ext.Msg.alert('Problemas con el Servidor...', "Error no Identificado...Consulte con el Administrador");
   		            }
   		        }
   		    });
    }

    function addConcepto(category) {

        if (winadd)
            winadd.show();
        else {
            winadd = Ext.create('Ext.window.Window', {
                id: 'winadd',
                layout: 'border',
                title: 'Agregar Concepto',
                autoShow: true,
                closeAction: 'hide',
                width: 450,
                height: 250,
                border: false,
                items: [
                    {
                        xtype: 'panel',
                        layout: 'fit',
                        region: 'center',
                        items: [
                            {
                                xtype: 'fieldset',
                                margin: '3 3 3 3',
                                title: 'Datos Generales',
                                items: [
                                    {
                                        xtype: 'fieldcontainer',
                                        height: 25,
                                        layout: {
                                            columns: 1,
                                            type: 'table'
                                        },
                                        items: [
                                            {
                                                xtype: 'textfield',
                                                id: 'txDescripcionC',
                                                margin: '0 3 10 0',
                                                width: 400,
                                                fieldLabel: 'Descripcion',
                                                labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                labelWidth: 60
                                            },
                                            {
                                                xtype: 'combobox',
                                                id: 'cbCategoriaC',
                                                width: 200,
                                                margin: '0 3 10 0',
                                                fieldLabel: 'Categoria',
                                                labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                labelWidth: 60,
                                                displayField: 'Description',
                                                valueField: 'CategoryID',
                                                queryMode: 'local',
                                                editable: false,
                                                //selectOnFocus: true,
                                                forceSelection: true,
                                                lazyRender: true,
                                                store: StCategoria,
                                                disabled: true
                                            },
                                            {
                                                xtype: 'combobox',
                                                id: 'cbUnidadC',
                                                width: 165,
                                                margin: '0 3 10 0',
                                                fieldLabel: 'Unidad',
                                                labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                labelWidth: 60,
                                                displayField: 'ShortDescription',
                                                valueField: 'UnitID',
                                                queryMode: 'local',
                                                editable: false,
                                                forceSelection: true,
                                                lazyRender: true,
                                                store: StUnidadC
                                            },
                                            {
                                                xtype: 'numberfield',
                                                id: 'txCostoC',
                                                margin: '0 3 10 0',
                                                width: 165,
                                                fieldLabel: 'Costo',
                                                labelStyle: 'font-familia:tahoma;font-size:10px;font-weight:bold;color:black',
                                                labelWidth: 60
                                            }
                                        ]
                                    },
                                    {
                                        xtype: 'fieldcontainer',
                                        height: 25,
                                        layout: {
                                            columns: 2,
                                            type: 'table'
                                        },
                                        items: [
                                            {
                                                xtype: 'button',
                                                id: 'btGrabarC',
                                                text: 'Grabar',
                                                margin: '0 3 0 10',
                                                handler: function () {
                                                    doSaveConcept();
                                                }
                                            },
                                            {
                                                xtype: 'button',
                                                id: 'btCancelarC',
                                                text: 'Cancelar',
                                                margin: '0 3 0 10',
                                                handler: function () {

                                                }
                                            }
                                        ]
                                    }
                                ]
                            }
                        ]
                    }
                ]
            });
        }
        Ext.getCmp('txDescripcionC').setValue('');
        Ext.getCmp('txCostoC').setValue('');
        Ext.getCmp('cbCategoriaC').setValue(category);
        if (category == '2' || category == '4') {
            Ext.getCmp('cbUnidadC').setValue('30');
            Ext.getCmp('cbUnidadC').disable();
        }
        else
            Ext.getCmp('cbUnidadC').enable();
    }

    function doSaveConcept() {
        ponerMayuscula(Ext.getCmp('winadd'));
        if (Ext.getCmp('txDescripcionC').getValue() == null || Ext.getCmp('txDescripcionC').getValue() == '') {
            Ext.Msg.show({ title: 'Error', msg: 'La descripción no puede ser vacio', buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR });
            return;
        }
        if (Ext.getCmp('txCostoC').getValue() == null || Ext.getCmp('txCostoC').getValue() == '') {
            Ext.Msg.show({ title: 'Error', msg: 'el costo no debe ser 0', buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR });
            return;
        }

        Ext.Ajax.request({
            url: '../ModuloBase/ConceptosClass.php',
            method: 'POST',
            params: {
                Opcion: 'GRABAR',
                ConceptID: '-1',
                CategoryID: Ext.getCmp('cbCategoriaC').getValue(),
                UnitID: Ext.getCmp('cbUnidadC').getValue(),
                Description: Ext.getCmp('txDescripcionC').getValue(),
                Cost: Ext.getCmp('txCostoC').getValue(),
                Source: '',
                Status: true

            },
            success: function (result, request) {
                var jsonData = Ext.decode(result.responseText);

                if (jsonData.success == true) {
                    if (Ext.getCmp('cbCategoriaC').getValue() == '1')
                        StConceptoE.load();
                    else if (Ext.getCmp('cbCategoriaC').getValue() == '2')
                        StConceptoMO.load();
                    else if (Ext.getCmp('cbCategoriaC').getValue() == '3')
                        StConceptoMT.load();
                    else
                        StConceptoT.load();
                    winadd.hide();
                    //Ext.Msg.show({ title: '.::Mensaje del Sistema', msg: 'Concepto Ingresado Correctamente', buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });
                    //DobleClick(jsonData.LastCode);
                }
                else {
                    Ext.Msg.show({ title: '.::Mensaje del Sistema', msg: 'Fallo Ingresar Concepto', buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR });
                }
                //loadStore();
            },
            failure: function (result, request) {
                resultado = false;
                if (result.failureType == 'server') {
                    Ext.Msg.alert('.::Mensaje del Sistema::.!', "Problemas con el Servidor...Consulte con el Administrador");
                }
                else {
                    Ext.Msg.alert('Problemas con el Servidor...', "Error no Identificado...Consulte con el Administrador");
                }
            }
        })
    }

    function doUpdateRubro(confir) {
        if (confir != 'yes') return;
        Ext.MessageBox.show({
            msg: 'Actualizando precios, por favor esperar...',
            progressText: 'Generando...',
            width: 300,
            wait: true,
            waitConfig: { interval: 200 },
            icon: 'ext-mb-download', //custom class in msg-box.html
            animEl: 'mb7'
        });
        Ext.Ajax.request({
            url: '../ModuloBase/RubroClass.php',
            method: 'POST',
            params: {
                Opcion: 'ACTUALIZARPRECIOS',
                RubroID: Ext.getCmp('txRubroID').getValue(),
                Rendimiento: Ext.getCmp('txRendimiento').getValue()
            },
            success: function (result, request) {
                var jsonData = Ext.decode(result.responseText);
                DobleClickRubro(Ext.getCmp('txRubroID').getValue());
                if (jsonData.success == true) {
                    recalculate();
                    Ext.MessageBox.hide();
                    Ext.Msg.show({ title: '.::Mensaje del Sistema', msg: 'Precios actualizados correctamente..Porfavor Grabe para guardar cambios', buttons: Ext.Msg.OK, icon: Ext.MessageBox.WARNING });

                }
                else {
                    Ext.Msg.show({ title: '.::Mensaje del Sistema', msg: 'Fallo Actualizacion de precios', buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR });
                }
            },
            failure: function (result, request) {
                resultado = false;
                if (result.failureType == 'server') {
                    Ext.Msg.alert('.::Mensaje del Sistema::.!', "Problemas con el Servidor...Consulte con el Administrador");
                }
                else {
                    Ext.Msg.alert('Problemas con el Servidor...', "Error no Identificado...Consulte con el Administrador");
                }
            }
        })
    }

    function mod(dividendo, divisor) {
        resDiv = dividendo / divisor;
        parteEnt = Math.floor(resDiv);            // Obtiene la parte Entera de resDiv
        parteFrac = resDiv - parteEnt;      // Obtiene la parte Fraccionaria de la división
        //modulo = parteFrac * divisor;  // Regresa la parte fraccionaria * la división (modulo)
        modulo = Math.round(parteFrac * divisor)
        return modulo;
    } // Fin de función mod

    // Función ObtenerParteEntDiv, regresa la parte entera de una división
    function ObtenerParteEntDiv(dividendo, divisor) {
        resDiv = dividendo / divisor;
        parteEntDiv = Math.floor(resDiv);
        return parteEntDiv;
    } // Fin de función ObtenerParteEntDiv

    // function fraction_part, regresa la parte Fraccionaria de una cantidad
    function fraction_part(dividendo, divisor) {
        resDiv = dividendo / divisor;
        f_part = Math.floor(resDiv);
        return f_part;
    } // Fin de función fraction_part


    // function string_literal conversion is the core of this program
    // converts numbers to spanish strings, handling the general special
    // cases in spanish language.
    function string_literal_conversion(number) {
        // first, divide your number in hundreds, tens and units, cascadig
        // trough subsequent divisions, using the modulus of each division
        // for the next.

        centenas = ObtenerParteEntDiv(number, 100);

        number = mod(number, 100);

        decenas = ObtenerParteEntDiv(number, 10);
        number = mod(number, 10);

        unidades = ObtenerParteEntDiv(number, 1);
        number = mod(number, 1);
        string_hundreds = "";
        string_tens = "";
        string_units = "";
        // cascade trough hundreds. This will convert the hundreds part to
        // their corresponding string in spanish.
        if (centenas == 1) {
            string_hundreds = "ciento ";
        }


        if (centenas == 2) {
            string_hundreds = "doscientos ";
        }

        if (centenas == 3) {
            string_hundreds = "trescientos ";
        }

        if (centenas == 4) {
            string_hundreds = "cuatrocientos ";
        }

        if (centenas == 5) {
            string_hundreds = "quinientos ";
        }

        if (centenas == 6) {
            string_hundreds = "seiscientos ";
        }

        if (centenas == 7) {
            string_hundreds = "setecientos ";
        }

        if (centenas == 8) {
            string_hundreds = "ochocientos ";
        }

        if (centenas == 9) {
            string_hundreds = "novecientos ";
        }

        // end switch hundreds

        // casgade trough tens. This will convert the tens part to corresponding
        // strings in spanish. Note, however that the strings between 11 and 19
        // are all special cases. Also 21-29 is a special case in spanish.
        if (decenas == 1) {
            //Special case, depends on units for each conversion
            if (unidades == 1) {
                string_tens = "once";
            }

            if (unidades == 2) {
                string_tens = "doce";
            }

            if (unidades == 3) {
                string_tens = "trece";
            }

            if (unidades == 4) {
                string_tens = "catorce";
            }

            if (unidades == 5) {
                string_tens = "quince";
            }

            if (unidades == 6) {
                string_tens = "dieciseis";
            }

            if (unidades == 7) {
                string_tens = "diecisiete";
            }

            if (unidades == 8) {
                string_tens = "dieciocho";
            }

            if (unidades == 9) {
                string_tens = "diecinueve";
            }
        }
        //alert("STRING_TENS ="+string_tens);

        if (decenas == 2) {
            string_tens = "veinti";

        }
        if (decenas == 3) {
            string_tens = "treinta";
        }
        if (decenas == 4) {
            string_tens = "cuarenta";
        }
        if (decenas == 5) {
            string_tens = "cincuenta";
        }
        if (decenas == 6) {
            string_tens = "sesenta";
        }
        if (decenas == 7) {
            string_tens = "setenta";
        }
        if (decenas == 8) {
            string_tens = "ochenta";
        }
        if (decenas == 9) {
            string_tens = "noventa";
        }

        // Fin de swicth decenas


        // cascades trough units, This will convert the units part to corresponding
        // strings in spanish. Note however that a check is being made to see wether
        // the special cases 11-19 were used. In that case, the whole conversion of
        // individual units is ignored since it was already made in the tens cascade.

        if (decenas == 1) {
            string_units = "";  // empties the units check, since it has alredy been handled on the tens switch
        }
        else {
            if (unidades == 1) {
                string_units = "un";
            }
            if (unidades == 2) {
                string_units = "dos";
            }
            if (unidades == 3) {
                string_units = "tres";
            }
            if (unidades == 4) {
                string_units = "cuatro";
            }
            if (unidades == 5) {
                string_units = "cinco";
            }
            if (unidades == 6) {
                string_units = "seis";
            }
            if (unidades == 7) {
                string_units = "siete";
            }
            if (unidades == 8) {
                string_units = "ocho";
            }
            if (unidades == 9) {
                string_units = "nueve";
            }
            // end switch units
        } // end if-then-else


        //final special cases. This conditions will handle the special cases which
        //are not as general as the ones in the cascades. Basically four:

        // when you've got 100, you dont' say 'ciento' you say 'cien'
        // 'ciento' is used only for [101 >= number > 199]
        if (centenas == 1 && decenas == 0 && unidades == 0) {
            string_hundreds = "cien ";
        }

        // when you've got 10, you don't say any of the 11-19 special
        // cases.. just say 'diez'
        if (decenas == 1 && unidades == 0) {
            string_tens = "diez ";
        }

        // when you've got 20, you don't say 'veinti', which is used
        // only for [21 >= number > 29]
        if (decenas == 2 && unidades == 0) {
            string_tens = "veinte ";
        }

        // for numbers >= 30, you don't use a single word such as veintiuno
        // (twenty one), you must add 'y' (and), and use two words. v.gr 31
        // 'treinta y uno' (thirty and one)
        if (decenas >= 3 && unidades >= 1) {
            string_tens = string_tens + " y ";
        }

        // this line gathers all the hundreds, tens and units into the final string
        // and returns it as the function value.
        final_string = string_hundreds + string_tens + string_units;


        return final_string;

    } //end of function string_literal_conversion()================================

    // handle some external special cases. Specially the millions, thousands
    // and hundreds descriptors. Since the same rules apply to all number triads
    // descriptions are handled outside the string conversion function, so it can
    // be re used for each triad.


    function covertirNumLetras(number) {
        millions_final_string = "";
        //number = number_format (number, 2);
        number1 = number;
        //settype (number, "integer");
        cent = number1.split(".");
        centavos = cent[1];
        //Mind Mod
        number = cent[0];

        if (centavos == 0 || centavos == undefined) {
            centavos = "00";
        }

        if (number == 0 || number == "") { // if amount = 0, then forget all about conversions,
            centenas_final_string = " cero "; // amount is zero (cero). handle it externally, to
            // function breakdown
        }
        else {

            millions = ObtenerParteEntDiv(number, 1000000); // first, send the millions to the string
            number = mod(number, 1000000);           // conversion function

            if (millions != 0) {
                // This condition handles the plural case
                if (millions == 1) {              // if only 1, use 'millon' (million). if
                    descriptor = " millon ";  // > than 1, use 'millones' (millions) as
                }
                else {                           // a descriptor for this triad.
                    descriptor = " millones ";
                }
            }
            else {
                descriptor = " ";                 // if 0 million then use no descriptor.
            }
            millions_final_string = string_literal_conversion(millions) + descriptor;


            thousands = ObtenerParteEntDiv(number, 1000);  // now, send the thousands to the string
            number = mod(number, 1000);            // conversion function.
            //print "Th:".thousands;
            if (thousands != 1) {                   // This condition eliminates the descriptor
                thousands_final_string = string_literal_conversion(thousands) + " mil ";
                //  descriptor = " mil ";          // if there are no thousands on the amount
            }
            if (thousands == 1) {
                thousands_final_string = " mil ";
            }
            if (thousands < 1) {
                thousands_final_string = " ";
            }

            // this will handle numbers between 1 and 999 which
            // need no descriptor whatsoever.

            centenas = number;
            centenas_final_string = string_literal_conversion(centenas);

        } //end if (number ==0)

        /*if (ereg("un",centenas_final_string))
        {
        centenas_final_string = ereg_replace("","o",centenas_final_string);
        }*/
        //finally, print the output.

        /* Concatena los millones, miles y cientos*/
        cad = millions_final_string + thousands_final_string + centenas_final_string;

        /* Convierte la cadena a Mayúsculas*/
        cad = cad.toUpperCase();

        if (centavos.length > 2) {

            if (centavos.substring(2, 3) >= 5) {
                centavos = centavos.substring(0, 1) + (parseInt(centavos.substring(1, 2)) + 1).toString();
            } else {

                centavos = centavos.substring(0, 1);
            }
        }

        /* Concatena a los centavos la cadena "/100" */
        if (centavos.length == 1) {
            centavos = centavos + "0";
        }
        centavos = centavos + "/100";

        moneda = " DOLARES DE LOS ESTADOS UNIDOS DE AMERICA";
        /*
        if (number == 1) {
            
        }
        else {
        moneda = " DOLARES ";
        }*/
        /* Regresa el número en cadena entre paréntesis y con tipo de moneda y la fase M.N.*/
        //Mind Mod, si se deja MIL pesos y se utiliza esta función para imprimir documentos
        //de caracter legal, dejar solo MIL es incorrecto, para evitar fraudes se debe de poner UM MIL pesos
        if (cad == '  MIL ') {
            cad = ' UN MIL ';
        }

        //alert("FINAL=" + cad + moneda + centavos + " M.N.");
        return cad + ' ' + centavos + ' ' + moneda;
    }

});
