public void loadSyncRelation(object element)
        {
            if (element != null)
            {
                PROVEEDOR_CATEGORIA poco = (PROVEEDOR_CATEGORIA)element;
                using (var entity = new TAE2Entities())
                {
                    var query = (from cust in entity.PROVEEDOR_CATEGORIA
                                 where poco.UNID_PROVEEDOR == cust.UNID_PROVEEDOR && poco.UNID_CATEGORIA == cust.UNID_CATEGORIA
                                 select cust).ToList();

                    //Actualización
                    if (query.Count > 0)
                    {
                        var aux = query.First();

                        if (aux.LAST_MODIFIED_DATE < poco.LAST_MODIFIED_DATE)
                        {
                            udpateElementRelationSync((object)poco);
                        }
                    }
                    //Inserción
                    else
                    {
                        insertElementRelationSyn((object)poco);
                    }

                    var modifiedRelation = entity.PROVEEDOR_CATEGORIA.First(p => p.UNID_PROVEEDOR == poco.UNID_PROVEEDOR && p.UNID_CATEGORIA == poco.UNID_CATEGORIA);
                    modifiedRelation.IS_MODIFIED = false;
                    entity.SaveChanges();
                }
            }
        }
        public void insertRelacion(object element, List <long> unidCategoria, USUARIO u)
        {
            if (element != null)
            {
                using (var entity = new TAE2Entities())
                {
                    PROVEEDOR proveedor  = (PROVEEDOR)element;
                    var       validacion = (from cust in entity.PROVEEDORs
                                            where cust.PROVEEDOR_NAME == proveedor.PROVEEDOR_NAME
                                            select cust).ToList();

                    if (validacion.Count == 0)
                    {
                        //proveedor.UNID_PROVEEDOR = UNID.getNewUNID();
                        //Sync
                        proveedor.IS_MODIFIED        = true;
                        proveedor.LAST_MODIFIED_DATE = UNID.getNewUNID();
                        var modifiedSync = entity.SYNCs.First(p => p.UNID_SYNC == 20120101000000000);
                        modifiedSync.ACTUAL_DATE = UNID.getNewUNID();
                        entity.SaveChanges();
                        //
                        entity.PROVEEDORs.AddObject(proveedor);
                        entity.SaveChanges();

                        UNID.Master(proveedor, u, -1, "Inserción");
                    }

                    if (unidCategoria.Count > 0)
                    {
                        foreach (var item in unidCategoria)
                        {
                            PROVEEDOR_CATEGORIA proveedorCategoria = new PROVEEDOR_CATEGORIA();
                            proveedorCategoria.UNID_CATEGORIA = item;
                            proveedorCategoria.UNID_PROVEEDOR = proveedor.UNID_PROVEEDOR;
                            proveedorCategoria.IS_ACTIVE      = true;
                            //Sync
                            proveedorCategoria.IS_MODIFIED        = true;
                            proveedorCategoria.LAST_MODIFIED_DATE = UNID.getNewUNID();
                            var modifiedSync = entity.SYNCs.First(p => p.UNID_SYNC == 20120101000000000);
                            modifiedSync.ACTUAL_DATE = UNID.getNewUNID();
                            entity.SaveChanges();
                            //
                            entity.PROVEEDOR_CATEGORIA.AddObject(proveedorCategoria);
                            entity.SaveChanges();
                        }
                    }
                }
            }
        }
        public void insertElementRelationSyn(object element)
        {
            if (element != null)
            {
                using (var entity = new TAE2Entities())
                {
                    PROVEEDOR_CATEGORIA relation = (PROVEEDOR_CATEGORIA)element;

                    //Sync
                    var modifiedSync = entity.SYNCs.First(p => p.UNID_SYNC == 20120101000000000);
                    modifiedSync.ACTUAL_DATE = UNID.getNewUNID();
                    entity.SaveChanges();

                    entity.PROVEEDOR_CATEGORIA.AddObject(relation);
                    entity.SaveChanges();
                }
            }
        }
        public void udpateElementRelation(object element)
        {
            if (element != null)
            {
                using (var entity = new TAE2Entities())
                {
                    PROVEEDOR_CATEGORIA relation = (PROVEEDOR_CATEGORIA)element;
                    var modifiedRelation         = entity.PROVEEDOR_CATEGORIA.First(p => p.UNID_PROVEEDOR == relation.UNID_PROVEEDOR && p.UNID_CATEGORIA == relation.UNID_CATEGORIA);
                    //Sync
                    modifiedRelation.IS_MODIFIED        = true;
                    modifiedRelation.LAST_MODIFIED_DATE = UNID.getNewUNID();

                    var modifiedSync = entity.SYNCs.First(p => p.UNID_SYNC == 20120101000000000);
                    modifiedSync.ACTUAL_DATE = UNID.getNewUNID();

                    entity.SaveChanges();
                }
            }
        }
        public void updateRelacion(object element, List <long> unidCategoria, List <long> auxUnidCategoria, List <long> unidCuenta, List <long> auxUnidCuenta, List <PROVEEDOR_CUENTA> listF, USUARIO u)
        {
            if (element != null)
            {
                using (var entity = new TAE2Entities())
                {
                    PROVEEDOR proveedor = (PROVEEDOR)element;

                    var modifiedProveedor = entity.PROVEEDORs.First(p => p.UNID_PROVEEDOR == proveedor.UNID_PROVEEDOR);
                    modifiedProveedor.CALLE          = proveedor.CALLE;
                    modifiedProveedor.CODIGO_POSTAL  = proveedor.CODIGO_POSTAL;
                    modifiedProveedor.CONTACTO       = proveedor.CONTACTO;
                    modifiedProveedor.MAIL           = proveedor.MAIL;
                    modifiedProveedor.RFC            = proveedor.RFC;
                    modifiedProveedor.UNID_CIUDAD    = proveedor.UNID_CIUDAD;
                    modifiedProveedor.UNID_PAIS      = proveedor.UNID_PAIS;
                    modifiedProveedor.PAI            = proveedor.PAI;
                    modifiedProveedor.CIUDAD         = proveedor.CIUDAD;
                    modifiedProveedor.TEL1           = proveedor.TEL1;
                    modifiedProveedor.TEL2           = proveedor.TEL2;
                    modifiedProveedor.PROVEEDOR_NAME = proveedor.PROVEEDOR_NAME;
                    //Sync
                    modifiedProveedor.IS_MODIFIED        = true;
                    modifiedProveedor.LAST_MODIFIED_DATE = UNID.getNewUNID();
                    var modifiedSync = entity.SYNCs.First(p => p.UNID_SYNC == 20120101000000000);
                    modifiedSync.ACTUAL_DATE = UNID.getNewUNID();
                    entity.SaveChanges();
                    //
                    UNID.Master(proveedor, u, -1, "Modificación");

                    //ELIMINA TODAS LAS RELACIONES QUE EXISTEN
                    if (auxUnidCategoria.Count > 0)
                    {
                        foreach (var e in auxUnidCategoria)
                        {
                            PROVEEDOR_CATEGORIA proveedorCategoria = new PROVEEDOR_CATEGORIA();
                            var query = (from p in entity.PROVEEDORs
                                         join relation in entity.PROVEEDOR_CATEGORIA
                                         on p.UNID_PROVEEDOR equals relation.UNID_PROVEEDOR
                                         join c in entity.CATEGORIAs
                                         on relation.UNID_CATEGORIA equals c.UNID_CATEGORIA
                                         where p.UNID_PROVEEDOR == proveedor.UNID_PROVEEDOR && c.UNID_CATEGORIA == e
                                         select relation).ToList().First();

                            query.IS_ACTIVE = false;
                            //Sync
                            query.IS_MODIFIED        = true;
                            query.LAST_MODIFIED_DATE = UNID.getNewUNID();
                            modifiedSync             = entity.SYNCs.First(p => p.UNID_SYNC == 20120101000000000);
                            modifiedSync.ACTUAL_DATE = UNID.getNewUNID();
                            entity.SaveChanges();
                            //
                        }
                    }
                    //INSERTA LAS NUEVAS RELACIONES PROVEEDOR CATEGORIA
                    if (unidCategoria.Count > 0)
                    {
                        foreach (var item in unidCategoria)
                        {
                            var query2 = (from cust in entity.PROVEEDOR_CATEGORIA
                                          where cust.UNID_CATEGORIA == item && cust.UNID_PROVEEDOR == proveedor.UNID_PROVEEDOR
                                          select cust).ToList();

                            if (query2.Count > 0)
                            {
                                var query3 = query2.First();

                                //Sync
                                query3.IS_ACTIVE          = true;
                                query3.IS_MODIFIED        = true;
                                query3.LAST_MODIFIED_DATE = UNID.getNewUNID();
                                modifiedSync             = entity.SYNCs.First(p => p.UNID_SYNC == 20120101000000000);
                                modifiedSync.ACTUAL_DATE = UNID.getNewUNID();
                                entity.SaveChanges();
                                //
                            }
                            else
                            {
                                PROVEEDOR_CATEGORIA proveedorCategoria = new PROVEEDOR_CATEGORIA();
                                proveedorCategoria.UNID_CATEGORIA = item;
                                proveedorCategoria.UNID_PROVEEDOR = proveedor.UNID_PROVEEDOR;
                                proveedorCategoria.IS_ACTIVE      = true;

                                //Sync
                                proveedorCategoria.IS_MODIFIED        = true;
                                proveedorCategoria.LAST_MODIFIED_DATE = UNID.getNewUNID();
                                modifiedSync             = entity.SYNCs.First(p => p.UNID_SYNC == 20120101000000000);
                                modifiedSync.ACTUAL_DATE = UNID.getNewUNID();
                                entity.SaveChanges();
                                //

                                entity.PROVEEDOR_CATEGORIA.AddObject(proveedorCategoria);
                                entity.SaveChanges();
                            }
                        }
                    }

                    //ELIMINA TODAS LAS RELACIONES DE PROVEEDOR_CUENTA
                    if (auxUnidCuenta.Count > 0)
                    {
                        foreach (var e in auxUnidCuenta)
                        {
                            PROVEEDOR_CUENTA proveedorCuenta = new PROVEEDOR_CUENTA();
                            var query = (from p in entity.PROVEEDORs
                                         join relation in entity.PROVEEDOR_CUENTA
                                         on p.UNID_PROVEEDOR equals relation.UNID_PROVEEDOR
                                         where p.UNID_PROVEEDOR == proveedor.UNID_PROVEEDOR && relation.UNID_PROVEEDOR_CUENTA == e
                                         select relation).ToList().First();

                            query.IS_ACTIVE = false;
                            //Sync
                            query.IS_MODIFIED        = true;
                            query.LAST_MODIFIED_DATE = UNID.getNewUNID();
                            modifiedSync             = entity.SYNCs.First(p => p.UNID_SYNC == 20120101000000000);
                            modifiedSync.ACTUAL_DATE = UNID.getNewUNID();
                            entity.SaveChanges();
                            //
                        }
                    }
                    //INSERTA LAS NUEVAS RELACIONES PROVEEDOR CUENTA
                    if (unidCuenta.Count > 0)
                    {
                        foreach (var item in unidCuenta)
                        {
                            var query2 = (from cust in entity.PROVEEDOR_CUENTA
                                          where cust.UNID_PROVEEDOR_CUENTA == item && cust.UNID_PROVEEDOR == proveedor.UNID_PROVEEDOR
                                          select cust).ToList();

                            if (query2.Count > 0)
                            {
                                var query3 = query2.First();

                                //Sync
                                query3.IS_ACTIVE          = true;
                                query3.IS_MODIFIED        = true;
                                query3.LAST_MODIFIED_DATE = UNID.getNewUNID();
                                modifiedSync             = entity.SYNCs.First(p => p.UNID_SYNC == 20120101000000000);
                                modifiedSync.ACTUAL_DATE = UNID.getNewUNID();
                                entity.SaveChanges();
                                //
                            }
                            else
                            {
                                PROVEEDOR_CUENTA proveedorCuenta = new PROVEEDOR_CUENTA();

                                proveedorCuenta = listF.First(p => p.UNID_PROVEEDOR_CUENTA == item);

                                proveedorCuenta.UNID_PROVEEDOR_CUENTA = item;
                                proveedorCuenta.UNID_PROVEEDOR        = proveedor.UNID_PROVEEDOR;
                                proveedorCuenta.IS_ACTIVE             = true;

                                //Sync
                                proveedorCuenta.IS_MODIFIED        = true;
                                proveedorCuenta.LAST_MODIFIED_DATE = UNID.getNewUNID();
                                modifiedSync             = entity.SYNCs.First(p => p.UNID_SYNC == 20120101000000000);
                                modifiedSync.ACTUAL_DATE = UNID.getNewUNID();
                                entity.SaveChanges();
                                //

                                entity.PROVEEDOR_CUENTA.AddObject(proveedorCuenta);
                                entity.SaveChanges();
                            }
                        }
                    }
                }
            }
        }