예제 #1
0
        public override void Eliminar(Envase entidad, Core.Modelo.Usuarios.Usuario usuario, Core.Datos.IDbContext cntxt)
        {
            using (var transaccion = cntxt.EmpezarTransaccion())
            {
                try
                {
                    foreach (var art in entidad.Articulos)
                    {
                        cntxt.Entry <ArticuloEnvase>(art).State = EntityState.Deleted;
                    }

                    cntxt.SaveChanges(); //para borrar las listas

                    var envaseParaBorrar = cntxt.BuscarPorId <Envase>(entidad.Id, Core.CargarRelaciones.NoCargarNada);
                    cntxt.Entry <Envase>(envaseParaBorrar).State = EntityState.Deleted;

                    cntxt.SaveChanges();

                    if (usuario != null)
                    {
                        cntxt.insertaAuditoria <Envase>(entidad, Accion.Elimina, usuario);
                    }

                    transaccion.Commit();
                }
                catch (Exception ex)
                {
                    transaccion.Rollback();
                }
            }
        }
예제 #2
0
        public override void Insertar(GrupoCliente grupoCliente, Core.Modelo.Usuarios.Usuario Usuario, List <Core.Datos.IDbContext> listaContextos)
        {
            listaContextos.ForEach(cntxt =>
            {
                if (grupoCliente.Clientes.Count > 0)
                {
                    foreach (var cli in grupoCliente.Clientes)
                    {
                        if (cli.Id == 0)
                        {
                            cntxt.Entry <Cliente>(cli).State = EntityState.Added;
                        }
                        else
                        {
                            cntxt.Set <Cliente>().Attach(cli);
                        }
                    }
                }

                cntxt.Set <GrupoCliente>().Add(grupoCliente);
                if (Usuario != null)
                {
                    cntxt.insertaAuditoria <GrupoCliente>(grupoCliente, Accion.Agrega, Usuario);
                }
                cntxt.SaveChanges();
            });
        }
예제 #3
0
 public override void Insertar(Envase envase, Core.Modelo.Usuarios.Usuario Usuario, List <Core.Datos.IDbContext> listaContextos)
 {
     listaContextos.ForEach(cntxt =>
     {
         if (envase.Articulos.Count > 0)
         {
             foreach (var art in envase.Articulos)
             {
                 art.ArticuloId = this.SetearFk(art, "Articulo");
                 if (art.Id == 0)
                 {
                     cntxt.Entry <ArticuloEnvase>(art).State = EntityState.Added;
                 }
                 else
                 {
                     cntxt.Set <ArticuloEnvase>().Attach(art);
                 }
             }
         }
         cntxt.Set <Envase>().Add(envase);
         if (Usuario != null)
         {
             cntxt.insertaAuditoria <Envase>(envase, Accion.Agrega, Usuario);
         }
         cntxt.SaveChanges();
     }
                            );
 }
예제 #4
0
        public override void Actualizar(Supervisor supervisor, Core.Modelo.Usuarios.Usuario Usuario, List <Core.Datos.IDbContext> listaContextos)
        {
            listaContextos.ForEach(cntxt =>
            {
                //obtengo al cliente como esta guardado en la base de datos
                var actualizar = cntxt.BuscarPorId <Supervisor>(supervisor.Id, CargarRelaciones.CargarTodo);
                if (actualizar != null)
                {
                    supervisor.JefeId = SetearFk(supervisor, "Jefe");

                    Action <Preventista> setFkPreventistas = p =>
                    {
                        p.SupervisorId = SetearFk(p, "Supervisor");
                    };

                    ActualizarColeccionMuchosAMuchos <Preventista>(actualizar.Preventistas, supervisor.Preventistas, cntxt, setFkPreventistas);

                    SetearValores(supervisor, actualizar, cntxt);
                    SetearValores(supervisor.DatosOldPreventa, actualizar.DatosOldPreventa, cntxt);

                    if (Usuario != null)
                    {
                        cntxt.insertaAuditoria <Supervisor>(actualizar, Accion.Modifica, Usuario);
                    }
                    cntxt.SaveChanges();
                }
            });
        }
예제 #5
0
        public override void Insertar(Supervisor supervisor, Core.Modelo.Usuarios.Usuario Usuario, List <Core.Datos.IDbContext> listaContextos)
        {
            listaContextos.ForEach(cntxt =>
            {
                //carga local de las propiedades FK para que no se dupliquen al momento de grabar.
                supervisor.JefeId = SetearFk(supervisor, "Jefe");

                if (supervisor.Preventistas.Count > 0)
                {
                    foreach (var prev in supervisor.Preventistas)
                    {
                        prev.SupervisorId = SetearFk(prev, "Supervisor");
                        if (prev.Id == 0)
                        {
                            cntxt.Entry <Preventista>(prev).State = EntityState.Added;
                        }
                        else
                        {
                            cntxt.Set <Preventista>().Attach(prev);
                        }
                    }
                }

                cntxt.Set <Supervisor>().Add(supervisor);
                if (Usuario != null)
                {
                    cntxt.insertaAuditoria <Supervisor>(supervisor, Accion.Agrega, Usuario);
                }
                cntxt.SaveChanges();
            });
        }
예제 #6
0
        public override void Eliminar(Familia entidad, Core.Modelo.Usuarios.Usuario usuario, Core.Datos.IDbContext cntxt)
        {
            var flia = cntxt.BuscarPorId <Familia>(entidad.Id, Core.CargarRelaciones.NoCargarNada);

            cntxt.Entry <Familia>(flia).State = System.Data.Entity.EntityState.Deleted;

            //cntxt.SaveChanges();
        }
예제 #7
0
        public override void Actualizar(GrupoCliente grupoCliente, Core.Modelo.Usuarios.Usuario Usuario, List <Core.Datos.IDbContext> listaContextos)
        {
            listaContextos.ForEach(cntxt =>
            {
                var actualizar = cntxt.BuscarPorId <GrupoCliente>(grupoCliente.Id, Core.CargarRelaciones.CargarTodo);
                if (actualizar != null)
                {
                    Action <Cliente> setFkClientes = c =>
                    {
                        if (c.DatosOld != null)
                        {
                            c.DatosOld.RutaDeVentaId   = this.SetearFk(c.DatosOld, "RutaDeVenta");
                            c.DatosOld.ListaDePrecioId = this.SetearFk(c.DatosOld, "ListaDePreciosDeVenta");
                        }
                        if (c.Domicilio != null)
                        {
                            c.Domicilio.CalleId = this.SetearFk(c.Domicilio, "Calle");
                        }
                        if (c.LugarEntrega != null)
                        {
                            c.LugarEntrega.CalleId = this.SetearFk(c.LugarEntrega, "Calle");
                        }
                        c.LocalidadDeEntregaId = this.SetearFk(c, "LocalidadDeEntrega");
                        c.LocalidadId          = this.SetearFk(c, "Localidad");
                        c.ProvinciaId          = this.SetearFk(c, "Provincia");
                        c.RamoId           = this.SetearFk(c, "Ramo");
                        c.ZonaGeograficaId = this.SetearFk(c, "ZonaGeografica");
                        c.ZonaLogisticaId  = this.SetearFk(c, "ZonaLogistica");
                        foreach (var item in c.ConfiguraCreditos)
                        {
                            item.CobradorId         = this.SetearFk(item, "Cobrador");
                            item.VendedorId         = this.SetearFk(item, "Vendedor");
                            item.VendedorEspecialId = this.SetearFk(item, "VendedorEspecial");
                            item.CondicionDePagoId  = this.SetearFk(item, "CondicionDePago");
                            item.CondicionDePago2Id = this.SetearFk(item, "CondicionDePago2");
                        }
                        foreach (var item in c.RutasDeVenta)
                        {
                            //item.DivisionId = this.SetearFk(item, "Division");
                            item.RegionDeVentaId = this.SetearFk(item, "RegionDeVenta");
                            item.SuplenteId      = this.SetearFk(item, "Suplente");
                            item.TitularId       = this.SetearFk(item, "Titular");
                        }
                    };

                    this.ActualizarColeccionMuchosAMuchos <Cliente>(actualizar.Clientes, grupoCliente.Clientes, cntxt, setFkClientes);

                    SetearValores(grupoCliente, actualizar, cntxt);

                    if (Usuario != null)
                    {
                        cntxt.insertaAuditoria <GrupoCliente>(actualizar, Accion.Modifica, Usuario);
                    }
                    cntxt.SaveChanges();
                }
            });
        }
예제 #8
0
        public override void Actualizar(Articulo articulo, Core.Modelo.Usuarios.Usuario Usuario, List <Core.Datos.IDbContext> listaContextos)
        {
            listaContextos.ForEach(cntxt =>
            {
                var actualizar = cntxt.BuscarPorId <Articulo>(articulo.Id, Core.CargarRelaciones.CargarTodo);
                if (actualizar != null)
                {
                    articulo.AreaId       = this.SetearFk(articulo, "Area");
                    articulo.SectorId     = this.SetearFk(articulo, "Sector");
                    articulo.SubsectorId  = this.SetearFk(articulo, "Subsector");
                    articulo.FamiliaId    = this.SetearFk(articulo, "Familia");
                    articulo.SubFamiliaId = this.SetearFk(articulo, "Subfamilia");

                    articulo.CaracteristicaId = this.SetearFk(articulo, "Caracteristica");
                    articulo.EmpaqueId        = this.SetearFk(articulo, "Empaque");
                    articulo.EnvaseId         = this.SetearFk(articulo, "Envase");
                    articulo.MarcaId          = this.SetearFk(articulo, "Marca");
                    articulo.ProveedorId      = this.SetearFk(articulo, "Proveedor");
                    //articulo.TasasId = this.SetearFk(articulo, "TasasDeIva");

                    if (articulo.DatosOld != null)
                    {
                        articulo.DatosOld.ArticuloEnvaseId = this.SetearFk(articulo.DatosOld, "ArticuloEnvase");
                        articulo.DatosOld.ClaseId          = this.SetearFk(articulo.DatosOld, "Clase");
                        articulo.DatosOld.DivisionId       = this.SetearFk(articulo.DatosOld, "Division");
                        articulo.DatosOld.LineaId          = this.SetearFk(articulo.DatosOld, "Linea");
                        articulo.DatosOld.RubroId          = this.SetearFk(articulo.DatosOld, "Rubro");
                        articulo.DatosOld.SKUId            = this.SetearFk(articulo.DatosOld, "SKU");
                    }

                    Action <ArticuloCompuesto> setFkArticulosCompuestos = artCom =>
                    {
                        artCom.ArticuloComponenteId = this.SetearFk(artCom, "ArticuloComponente");
                    };

                    this.ActualizarColeccionUnoAMuchos <ArticuloCompuesto>(actualizar.ArticulosCompuestos, articulo.ArticulosCompuestos, cntxt, setFkArticulosCompuestos);

                    this.ActualizarColeccionMuchosAMuchos <GrupoArticulo>(actualizar.Grupo, articulo.Grupo, cntxt);

                    this.ActualizarColeccionUnoAMuchos <ObservacionArticulo>(actualizar.Observaciones, articulo.Observaciones, cntxt);

                    this.ActualizarColeccionUnoAMuchos <CodigoDun>(actualizar.CodigoDUN, articulo.CodigoDUN, cntxt);

                    this.ActualizarColeccionUnoAMuchos <CodigoEan>(actualizar.CodigoEAN, articulo.CodigoEAN, cntxt);

                    this.SetearValores(articulo, actualizar, cntxt);
                    this.SetearValores(articulo.DatosOld, actualizar.DatosOld, cntxt);

                    if (Usuario != null)
                    {
                        cntxt.insertaAuditoria <Articulo>(actualizar, Accion.Modifica, Usuario);
                    }
                    cntxt.SaveChanges();
                }
            });
        }
예제 #9
0
        //public override Core.DTO.Carriers.GrabadorCarrier GrabarNuevo(Modelo.Proveedores.DocumentoCompra Entidad, Core.Modelo.Usuarios.Usuario Usuario)
        //{
        //    var paramers = new ParameterOverride[2];
        //    paramers[0] = new ParameterOverride("empresa", Entidad.Empresa);
        //    paramers[1] = new ParameterOverride("entidad", "DocumentoCompra");
        //    var BuscadorComprobante = (IBuscadorComprobante)FabricaNegocios.Instancia.Resolver(typeof(IBuscadorComprobante), paramers);
        //    var comprobante = BuscadorComprobante.BuscarRepetido(Entidad.Empresa, Entidad.Sucursal, Entidad.Proveedor.Id, (int)Entidad.TipoDocumento, Entidad.Prenumero, Entidad.Numero);
        //    if (comprobante != null)
        //    {
        //        var grabadorCarrier = new GrabadorCarrier();
        //        grabadorCarrier.setError(true);
        //        grabadorCarrier.setMensaje(string.Format("El comprobante ya esta cargado para el proveedor {0}", Entidad.Proveedor.Nombre));
        //        return grabadorCarrier;
        //    }
        //    else
        //    {
        //        var creadorMovimiento = FabricaNegocios._Resolver<ICreador<Inteldev.Fixius.Modelo.Tesoreria.MovimientoBancario>>();
        //        var grabadorCuentaBancaria = FabricaNegocios._Resolver<IGrabador<Modelo.Tesoreria.CuentaBancaria>>();
        //        //aca mandar la creacion de las correspondientes notas de credito o notas de debito internas
        //        var grabadorNotas = FabricaNegocios._Resolver<IGrabador<Modelo.Proveedores.DocumentoCompra>>();

        //        if (Entidad.TipoDocumento == Modelo.Proveedores.TipoDocumento.NotaDeCredito ||
        //            Entidad.TipoDocumento == Modelo.Proveedores.TipoDocumento.NotaDeDebito)
        //        {
        //            //var notasDeCreditoPendientes = Entidad.NotasPendientes;
        //            foreach (NotaPendiente notaPendiente in Entidad.NotasPendientes)
        //            {
        //                if (notaPendiente.Seleccionado)
        //                {
        //                    notaPendiente.Aplicado = notaPendiente.Importe;

        //                    var mementoNota = new Memento<NotaPendiente>(notaPendiente);

        //                    grabadorNotas.GrabarExistente(notaPendiente, Usuario);
        //                    mementoNota.RecuperarEstado();
        //                    var grabadorNotasFox = FabricaNegocios._Resolver<IGrabadorFox<Modelo.Proveedores.DocumentoCompra>>();
        //                    grabadorNotasFox.Grabar(notaPendiente);

        //                    //si es Credito Pendiente lo convierte en Debito Pendiente y viceversa
        //                    notaPendiente.TipoDocumento = notaPendiente.TipoDocumento == TipoDocumento.NotaDeCreditoInterno ? TipoDocumento.NotadeDébitoInterno : TipoDocumento.NotaDeCreditoInterno;
        //                    notaPendiente.Id = 0;
        //                    notaPendiente.Codigo = null;
        //                    mementoNota.CapturarEstado(notaPendiente);
        //                    notaPendiente.ItemsConceptos.Clear();
        //                    var carrier = grabadorNotas.Grabar(notaPendiente, Usuario);

        //                    mementoNota.RecuperarEstado();
        //                    grabadorNotasFox = FabricaNegocios._Resolver<IGrabadorFox<Modelo.Proveedores.DocumentoCompra>>();
        //                    grabadorNotasFox.Grabar(notaPendiente);
        //                }
        //            }
        //        }
        //        //else
        //        //{
        //        //    if (Entidad.TipoDocumento == Modelo.Proveedores.TipoDocumento.NotaDeDebito)
        //        //    {
        //        //        var notasDeDebitoPendientes = Entidad.NotasPendientes;
        //        //        foreach (NotaPendiente notaDebito in notasDeDebitoPendientes)
        //        //        {
        //        //            if (notaDebito.Seleccionado)
        //        //            {
        //        //                notaDebito.Aplicado = notaDebito.Importe;
        //        //                grabadorNotas.Grabar(notaDebito, Usuario);

        //        //                grabadorNotasFox.Grabar(notaDebito);
        //        //                var notaCredito = notaDebito;
        //        //                notaCredito.Proveedor = proveedor;
        //        //                notaCredito.TipoDocumento = Modelo.Proveedores.TipoDocumento.NotaDeCreditoInterno;
        //        //                notaCredito.Id = 0;
        //        //                notaDebito.Codigo = null;
        //        //                grabadorNotas.Grabar(notaCredito, Usuario);
        //        //                notaCredito.Proveedor = proveedor;
        //        //                grabadorNotasFox.Grabar(notaCredito);
        //        //            }
        //        //        }
        //        //    }
        //        //}


        //        var carrierNuevo = base.GrabarNuevo(Entidad, Usuario);
        //        if (carrierNuevo.getError() == false && Entidad.TipoDocumento == TipoDocumento.LiquidacionBancaria)
        //        {
        //            //aca mando el movimiento bancario
        //            decimal debe = 0;
        //            decimal haber = 0;
        //            foreach (var item in Entidad.ItemsConceptos)
        //            {
        //                debe += item.Debe;
        //                haber += item.Haber;
        //            }
        //            var movimiento = creadorMovimiento.Crear();
        //            movimiento.ConceptoMovimientoBancario = Entidad.ConceptoMovimientoBancario;
        //            movimiento.Fecha = Entidad.Fecha;
        //            movimiento.FechaEfectiva = Entidad.Fecha;
        //            movimiento.Debe = debe;
        //            movimiento.Haber = haber;
        //            var cuentaBancaria = Entidad.CuentaBancaria;
        //            if (cuentaBancaria != null && Entidad.TipoDocumento == TipoDocumento.LiquidacionBancaria)
        //            {
        //                cuentaBancaria.MovimientosBancarios.Add(movimiento);
        //                grabadorCuentaBancaria.Grabar(cuentaBancaria, Usuario);
        //            }
        //        }
        //        if (!carrierNuevo.getError())
        //            carrierNuevo.setMensaje(string.Format("Comprobante grabado correctamente. Numero: {0}-{1}", Entidad.Prenumero, Entidad.Numero));
        //        return carrierNuevo;
        //    }
        //}

        public override void Actualizar(DocumentoCompra doc, Core.Modelo.Usuarios.Usuario Usuario, List <IDbContext> listaContextos)
        {
            listaContextos.ForEach(cntxt =>
            {
                var actualizar = cntxt.BuscarPorId <DocumentoCompra>(doc.Id, CargarRelaciones.CargarTodo);
                if (actualizar != null)
                {
                    if (doc.MovimientoBancario != null)
                    {
                        doc.MovimientoBancario.ConceptoMovimientoBancarioId = this.SetearFk(doc.MovimientoBancario, "ConceptoMovimientoBancario");
                    }

                    if (doc.CuentaBancaria != null)
                    {
                        doc.CuentaBancaria.BancoId = this.SetearFk(doc.CuentaBancaria, "Banco");
                    }

                    doc.AutorizaId  = SetearFk(doc, "Autoriza");
                    doc.ProveedorId = SetearFk(doc, "Proveedor");

                    #region Listas

                    Action <DocumentoProveedor> setFkDocumentoProveedor = d =>
                    {
                        d.ProveedorId = this.SetearFk(d, "Proveedor");
                    };

                    ActualizarColeccionUnoAMuchos <DocumentoProveedor>(actualizar.DocumentosAsociados, doc.DocumentosAsociados, cntxt, setFkDocumentoProveedor);

                    Action <ItemsConceptos> setFkItemsConceptos = i =>
                    {
                        i.ConceptoId = this.SetearFk(i, "Concepto");
                    };

                    ActualizarColeccionUnoAMuchos <ItemsConceptos>(actualizar.ItemsConceptos, doc.ItemsConceptos, cntxt, setFkItemsConceptos);

                    ActualizarColeccionUnoAMuchos <NotaPendiente>(actualizar.NotasPendientes, doc.NotasPendientes, cntxt);

                    #endregion

                    SetearValores(doc, actualizar, cntxt);
                    SetearValores(doc.MovimientoBancario, actualizar.MovimientoBancario, cntxt);
                    SetearValores(doc.CuentaBancaria, actualizar.CuentaBancaria, cntxt);


                    if (Usuario != null)
                    {
                        cntxt.insertaAuditoria <DocumentoCompra>(actualizar, Accion.Modifica, Usuario);
                    }
                    cntxt.SaveChanges();
                }
            });
        }
 public override void Insertar(DivisionComercial division, Core.Modelo.Usuarios.Usuario Usuario, List <Core.Datos.IDbContext> listaContextos)
 {
     listaContextos.ForEach(cntxt =>
     {
         cntxt.Set <DivisionComercial>().Add(division);
         if (Usuario != null)
         {
             cntxt.insertaAuditoria <DivisionComercial>(division, Accion.Agrega, Usuario);
         }
         cntxt.SaveChanges();
     });
 }
        public override void Eliminar(Articulo articulo, Core.Modelo.Usuarios.Usuario usuario, Core.Datos.IDbContext cntxt)
        {
            using (var transaccion = cntxt.EmpezarTransaccion())
            {
                try
                {
                    foreach (var obs in articulo.Observaciones)
                    {
                        cntxt.Entry <ObservacionArticulo>(obs).State = EntityState.Deleted;
                    }

                    foreach (var item in articulo.CodigoDUN)
                    {
                        cntxt.Entry <CodigoDun>(item).State = EntityState.Deleted;
                    }

                    foreach (var item in articulo.CodigoEAN)
                    {
                        cntxt.Entry <CodigoEan>(item).State = EntityState.Deleted;
                    }

                    foreach (var artCom in articulo.ArticulosCompuestos)
                    {
                        cntxt.Entry <ArticuloCompuesto>(artCom).State = EntityState.Deleted;
                    }

                    this.AgregarAListaParaBorrar(articulo.DatosOld);

                    cntxt.SaveChanges(); //para borrar las listaas.

                    var artABorrar = cntxt.BuscarPorId <Articulo>(articulo.Id, CargarRelaciones.NoCargarNada);

                    cntxt.Entry <Articulo>(artABorrar).State = EntityState.Deleted;

                    cntxt.SaveChanges(); //Borra el articulo

                    this.EliminarGrafo(cntxt);

                    if (usuario != null)
                    {
                        cntxt.insertaAuditoria <Articulo>(articulo, Accion.Elimina, usuario);
                    }

                    transaccion.Commit();
                }
                catch (Exception ex)
                {
                    transaccion.Rollback();
                }
            }
        }
예제 #12
0
 public override void Actualizar(Envase envase, Core.Modelo.Usuarios.Usuario Usuario, List <Core.Datos.IDbContext> listaContextos)
 {
     listaContextos.ForEach(cntxt =>
     {
         var actualizar = cntxt.BuscarPorId <Envase>(envase.Id, Core.CargarRelaciones.CargarTodo);
         if (actualizar != null)
         {
             Action <ArticuloEnvase> setFkArticuloEnvase = p => p.ArticuloId = this.SetearFk(p, "Articulo");
             this.ActualizarColeccionUnoAMuchos <ArticuloEnvase>(actualizar.Articulos, envase.Articulos, cntxt, setFkArticuloEnvase);
             this.SetearValores(envase, actualizar, cntxt);
             if (Usuario != null)
             {
                 cntxt.insertaAuditoria <Envase>(envase, Accion.Modifica, Usuario);
             }
             cntxt.SaveChanges();
         }
     });
 }
        public override void Actualizar(DivisionComercial division, Core.Modelo.Usuarios.Usuario Usuario, List <Core.Datos.IDbContext> listaContextos)
        {
            listaContextos.ForEach(cntxt =>
            {
                //obtengo la division como esta guardada en la base de datos
                var actualizar = cntxt.BuscarPorId <DivisionComercial>(division.Id, CargarRelaciones.CargarTodo);

                this.ActualizarColeccionUnoAMuchos <EmpresaCodigo>(actualizar.Empresas, division.Empresas, cntxt);

                SetearValores(division, actualizar, cntxt);

                if (Usuario != null)
                {
                    cntxt.insertaAuditoria <DivisionComercial>(actualizar, Accion.Modifica, Usuario);
                }
                cntxt.SaveChanges();
            });
        }
        public override void Insertar(RutaDeVenta ruta, Core.Modelo.Usuarios.Usuario Usuario, List<Core.Datos.IDbContext> listaContextos)
        {
            listaContextos.ForEach(cntxt =>
            {
                //ruta.DivisionId = this.SetearFk(ruta, "Division");
                ruta.RegionDeVentaId = this.SetearFk(ruta, "RegionDeVenta");
                ruta.SuplenteId = this.SetearFk(ruta, "Suplente");
                ruta.TitularId = this.SetearFk(ruta, "Titular");

                if (ruta.Clientes.Count > 0)
                {
                    foreach (var cli in ruta.Clientes)
                    {
                        if (cli.Id == 0)
                            cntxt.Entry(cli).State = System.Data.Entity.EntityState.Added;
                        else
                            cntxt.Set<Cliente>().Attach(cli);
                    }
                }
                if (ruta.Vertices.Count > 0)
                {
                    foreach (var vert in ruta.Vertices)
                    {
                        if (vert.Id == 0)
                            cntxt.Entry(vert).State = EntityState.Added;
                        else
                            cntxt.Set<Coordenada>().Attach(vert);
                    }
                }

                cntxt.Set<RutaDeVenta>().Add(ruta);
                if (Usuario != null)
                    cntxt.insertaAuditoria<RutaDeVenta>(ruta, Accion.Agrega, Usuario);
                cntxt.SaveChanges();
            });

        }
예제 #15
0
        public override void Eliminar(RutaDeVenta entidad, Core.Modelo.Usuarios.Usuario usuario, Core.Datos.IDbContext cntxt)
        {
            using (var transaccion = cntxt.EmpezarTransaccion())
            {
                try
                {
                    this.AgregarAListaParaBorrar(entidad.DatosOld);

                    var ruta = cntxt.BuscarPorId <RutaDeVenta>(entidad.Id, Core.CargarRelaciones.NoCargarNada);

                    cntxt.Entry <RutaDeVenta>(ruta).State = System.Data.Entity.EntityState.Deleted;

                    cntxt.SaveChanges();

                    this.EliminarGrafo(cntxt);

                    transaccion.Commit();
                }
                catch (Exception ex)
                {
                    transaccion.Rollback();
                }
            }
        }
예제 #16
0
        public override void Insertar(Articulo articulo, Core.Modelo.Usuarios.Usuario Usuario, List <Core.Datos.IDbContext> listaContextos)
        {
            listaContextos.ForEach(cntxt =>
            {
                //carga local de las propiedades FK para que no se dupliquen al momento de grabar.
                articulo.AreaId       = this.SetearFk(articulo, "Area");
                articulo.SectorId     = this.SetearFk(articulo, "Sector");
                articulo.SubsectorId  = this.SetearFk(articulo, "Subsector");
                articulo.FamiliaId    = this.SetearFk(articulo, "Familia");
                articulo.SubFamiliaId = this.SetearFk(articulo, "Subfamilia");

                articulo.CaracteristicaId = this.SetearFk(articulo, "Caracteristica");
                articulo.EmpaqueId        = this.SetearFk(articulo, "Empaque");
                articulo.EnvaseId         = this.SetearFk(articulo, "Envase");
                articulo.MarcaId          = this.SetearFk(articulo, "Marca");
                articulo.ProveedorId      = this.SetearFk(articulo, "Proveedor");
                //articulo.TasasId = this.SetearFk(articulo, "TasasDeIva");

                if (articulo.DatosOld != null)
                {
                    articulo.DatosOld.ArticuloEnvaseId = this.SetearFk(articulo.DatosOld, "ArticuloEnvase");
                    articulo.DatosOld.ClaseId          = this.SetearFk(articulo.DatosOld, "Clase");
                    articulo.DatosOld.DivisionId       = this.SetearFk(articulo.DatosOld, "Division");
                    articulo.DatosOld.LineaId          = this.SetearFk(articulo.DatosOld, "Linea");
                    articulo.DatosOld.RubroId          = this.SetearFk(articulo.DatosOld, "Rubro");
                    articulo.DatosOld.SKUId            = this.SetearFk(articulo.DatosOld, "SKU");
                }
                //carga las propiedades de listas
                if (articulo.ArticulosCompuestos.Count > 0)
                {
                    foreach (var artcomp in articulo.ArticulosCompuestos)
                    {
                        artcomp.ArticuloComponenteId = this.SetearFk(artcomp, "ArticuloComponente");
                        //artcomp.ArticuloPadreId = this.SetearFk(artcomp, "ArticuloPadre");
                        if (artcomp.Id == 0)
                        {
                            cntxt.Entry <ArticuloCompuesto>(artcomp).State = EntityState.Added;
                        }
                        else
                        {
                            cntxt.Set <ArticuloCompuesto>().Attach(artcomp);
                        }
                    }
                }

                if (articulo.Grupo.Count > 0)
                {
                    foreach (var gru in articulo.Grupo)
                    {
                        if (gru.Id == 0)
                        {
                            cntxt.Entry <GrupoArticulo>(gru).State = EntityState.Added;
                        }
                        else
                        {
                            cntxt.Set <GrupoArticulo>().Attach(gru);
                        }
                    }
                }

                cntxt.Set <Articulo>().Add(articulo);
                if (Usuario != null)
                {
                    cntxt.insertaAuditoria <Articulo>(articulo, Accion.Agrega, Usuario);
                }
                cntxt.SaveChanges();
            }
                                   );
        }
 public override Core.DTO.Carriers.GrabadorCarrier GrabarNuevo(DevolucionDeMercaderia Entidad, Core.Modelo.Usuarios.Usuario Usuario)
 {
     this.grabaDebitos(Entidad, Usuario);
     return(base.GrabarNuevo(Entidad, Usuario));
 }
예제 #18
0
        /// <summary>
        /// 2015 - AÑADIDO - Metodo que agrega en los contextos un cliente. Sobreescrito de GrabadorGenerico, utilizado para reemplazar los metodos de insercion de DbContextBase
        /// </summary>
        /// <param name="cliente">Cliente a agregar.</param>
        /// <param name="Usuario">Usuario encargado de la acción.</param>
        /// <param name="listaContextos">Contextos en donde se encuentra el DbSet de Cliente</param>
        public override void Insertar(Cliente cliente, Core.Modelo.Usuarios.Usuario Usuario, List <Core.Datos.IDbContext> listaContextos)
        {
            listaContextos.ForEach(cntxt =>
            {
                //carga local de las propiedades FK para que no se dupliquen al momento de grabar.
                #region Especial - Zona Logistica debe ser por defecto el primer elemento de la lista RutaDeVenta.
                if (cliente.ZonaLogistica == null)
                {
                    var primerRuta = cliente.RutasDeVenta.FirstOrDefault();
                    if (primerRuta != null)
                    {
                        var codigoZonaLogABuscar = primerRuta.Codigo;
                        var zonaLog = cntxt.Set <ZonaLogistica>().FirstOrDefault(p => p.Codigo.Equals(codigoZonaLogABuscar));
                        if (zonaLog != null)
                        {
                            cliente.ZonaLogisticaId = zonaLog.Id;
                        }
                    }
                }
                else
                {
                    cliente.ZonaLogisticaId = SetearFk(cliente, "ZonaLogistica");
                }
                #endregion

                cliente.ZonaGeograficaId = SetearFk(cliente, "ZonaGeografica");

                cliente.LocalidadId = SetearFk(cliente, "Localidad");

                cliente.LocalidadDeEntregaId = SetearFk(cliente, "LocalidadDeEntrega");

                cliente.ProvinciaId = SetearFk(cliente, "Provincia");

                cliente.RamoId = SetearFk(cliente, "Ramo");

                cliente.CuentaPadreId = SetearFk(cliente, "CuentaPadre");

                if (cliente.DatosOld != null)
                {
                    //cliente.DatosOld.ZonaLogisticaId = SetearFk(cliente.DatosOld, "ZonaLogistica");
                    //cliente.DatosOld.ZonaGeograficaId = SetearFk(cliente.DatosOld, "ZonaGeografica");
                    cliente.DatosOld.RutaDeVentaId   = SetearFk(cliente.DatosOld, "RutaDeVenta");
                    cliente.DatosOld.ListaDePrecioId = SetearFk(cliente.DatosOld, "ListaDePreciosDeVenta");
                }

                if (cliente.Domicilio != null)
                {
                    cliente.Domicilio.CalleId = SetearFk(cliente.Domicilio, "Calle");
                }

                if (cliente.LugarEntrega != null)
                {
                    cliente.LugarEntrega.CalleId = SetearFk(cliente.LugarEntrega, "Calle");
                }

                //carga las propiedades de listas
                if (cliente.ConfiguraCreditos.Count > 0)
                {
                    foreach (var confCred in cliente.ConfiguraCreditos)
                    {
                        confCred.CobradorId         = SetearFk(confCred, "Cobrador");
                        confCred.CondicionDePagoId  = SetearFk(confCred, "CondicionDePago");
                        confCred.CondicionDePago2Id = SetearFk(confCred, "CondicionDePago2");
                        confCred.VendedorId         = SetearFk(confCred, "Vendedor");
                        confCred.VendedorEspecialId = SetearFk(confCred, "VendedorEspecial");
                        if (confCred.Id == 0)
                        {
                            cntxt.Entry <ConfiguraCredito>(confCred).State = EntityState.Added;
                        }
                        else
                        {
                            cntxt.Set <ConfiguraCredito>().Attach(confCred);
                        }
                    }
                }

                if (cliente.TarjetasCliente.Count > 0)
                {
                    foreach (var tar in cliente.TarjetasCliente)
                    {
                        tar.TipoTarjetaId = SetearFk(tar, "TipoTarjeta");
                        if (tar.Id == 0)
                        {
                            cntxt.Entry <TarjetaMayoristaItem>(tar).State = EntityState.Added;
                        }
                        else
                        {
                            cntxt.Set <TarjetaMayoristaItem>().Attach(tar);
                        }
                    }
                }

                if (cliente.RutasDeVenta.Count > 0)
                {
                    foreach (var ruta in cliente.RutasDeVenta)
                    {
                        //ruta.DivisionId = SetearFk(ruta, "Division");
                        ruta.RegionDeVentaId = SetearFk(ruta, "RegionDeVenta");
                        ruta.SuplenteId      = SetearFk(ruta, "Suplente");
                        ruta.TitularId       = SetearFk(ruta, "Titular");

                        if (ruta.Id == 0)
                        {
                            cntxt.Entry <RutaDeVenta>(ruta).State = EntityState.Added;
                        }
                        else
                        {
                            cntxt.Set <RutaDeVenta>().Attach(ruta);
                        }
                    }
                }

                if (cliente.GrupoDinamico.Count > 0)
                {
                    foreach (var gru in cliente.GrupoDinamico)
                    {
                        if (gru.Id == 0)
                        {
                            cntxt.Entry <GrupoCliente>(gru).State = EntityState.Added;
                        }
                        else
                        {
                            cntxt.Set <GrupoCliente>().Attach(gru);
                        }
                    }
                }

                cntxt.Set <Cliente>().Add(cliente);
                if (Usuario != null)
                {
                    cntxt.insertaAuditoria <Cliente>(cliente, Accion.Agrega, Usuario);
                }
                cntxt.SaveChanges();
            }
                                   );
        }
예제 #19
0
        public override Core.DTO.Carriers.GrabadorCarrier GrabarNuevo(Core.Modelo.Organizacion.Empresa Entidad, Core.Modelo.Usuarios.Usuario Usuario)
        {
            var carrier            = base.GrabarNuevo(Entidad, Usuario);
            var creadorReferencia  = FabricaNegocios._Resolver <ICreador <Modelo.Contabilidad.ReferenciaContable> >();
            var grabadorReferencia = FabricaNegocios._Resolver <IGrabador <Modelo.Contabilidad.ReferenciaContable> >();

            foreach (var item in Enum.GetValues(typeof(Imputaciones)))
            {
                var referencia = creadorReferencia.Crear();
                referencia.Empresa    = Entidad.Codigo;
                referencia.Imputacion = (Imputaciones)Enum.Parse(typeof(Imputaciones), item.ToString());
                grabadorReferencia.Grabar(referencia, Usuario);
            }
            return(carrier);
        }
예제 #20
0
        public override void Actualizar(TarjetaClienteMayorista tarjetaClienteMayorista, Core.Modelo.Usuarios.Usuario Usuario, List <Core.Datos.IDbContext> listaContextos)
        {
            listaContextos.ForEach(cntxt =>
            {
                //obtengo al cliente como esta guardado en la base de datos
                var actualizar = cntxt.BuscarPorId <TarjetaClienteMayorista>(tarjetaClienteMayorista.Id, CargarRelaciones.CargarTodo);
                if (actualizar != null)
                {
                    tarjetaClienteMayorista.HeredaId = this.SetearFk(tarjetaClienteMayorista, "Hereda");

                    Action <Ramo> seteaFkRamo = r =>
                    {
                        r.CanalId   = this.SetearFk(r, "Canal");
                        r.TarjetaId = this.SetearFk(r, "Tarjeta");
                    };

                    //this.ActualizarColeccionUnoAMuchos<Ramo>(actualizar.Ramos, tarjetaClienteMayorista.Ramos, cntxt, seteaFkRamo);
                    this.ActualizarColeccionMuchosAMuchos <Ramo>(actualizar.Ramos, tarjetaClienteMayorista.Ramos, cntxt, seteaFkRamo);


                    this.SetearValores(tarjetaClienteMayorista, actualizar, cntxt);

                    if (Usuario != null)
                    {
                        cntxt.insertaAuditoria <TarjetaClienteMayorista>(actualizar, Accion.Modifica, Usuario);
                    }

                    cntxt.SaveChanges();
                }
            });
        }
예제 #21
0
        /// <summary>
        /// 2015 - Añadido - Metodo que actualiza en los contextos un cliente. Sobreescrito de GrabadorGenerico, utilizado para reemplazar el metodo Actualizar de DbContextBase
        /// </summary>
        /// <param name="cliente">Cliente a actualizar.</param>
        /// <param name="Usuario">Usuario encargado de la acción.</param>
        /// <param name="listaContextos">Contextos en donde se encuentra el DbSet de Cliente.</param>
        public override void Actualizar(Cliente cliente, Core.Modelo.Usuarios.Usuario Usuario, List <Core.Datos.IDbContext> listaContextos)
        {
            foreach (var cntxt in listaContextos)
            {
                //obtengo al cliente como esta guardado en la base de datos
                var actualizar = cntxt.BuscarPorId <Cliente>(cliente.Id, CargarRelaciones.CargarTodo);
                if (actualizar != null)
                {
                    #region Especial - Zona Logistica debe ser por defecto el primer elemento de la lista RutaDeVenta.
                    if (cliente.ZonaLogistica == null)
                    {
                        var primerRuta = cliente.RutasDeVenta.FirstOrDefault();
                        if (primerRuta != null)
                        {
                            var codigoZonaLogABuscar = primerRuta.Codigo;
                            var zonaLog = cntxt.Set <ZonaLogistica>().FirstOrDefault(p => p.Codigo.Equals(codigoZonaLogABuscar));
                            if (zonaLog != null)
                            {
                                cliente.ZonaLogisticaId = zonaLog.Id;
                            }
                        }
                    }
                    else
                    {
                        cliente.ZonaLogisticaId = SetearFk(cliente, "ZonaLogistica");
                    }
                    #endregion

                    if (cliente.DatosOld != null)
                    {
                        //cliente.DatosOld.ZonaLogisticaId = SetearFk(cliente.DatosOld, "ZonaLogistica");
                        //cliente.DatosOld.ZonaGeograficaId = SetearFk(cliente.DatosOld, "ZonaGeografica");
                        cliente.DatosOld.RutaDeVentaId   = SetearFk(cliente.DatosOld, "RutaDeVenta");
                        cliente.DatosOld.ListaDePrecioId = SetearFk(cliente.DatosOld, "ListaDePreciosDeVenta");
                    }

                    if (cliente.Domicilio != null)
                    {
                        cliente.Domicilio.CalleId = SetearFk(cliente.Domicilio, "Calle");
                    }


                    if (cliente.LugarEntrega != null)
                    {
                        cliente.LugarEntrega.CalleId = SetearFk(cliente.LugarEntrega, "Calle");
                    }

                    //actualizo fk
                    //cliente.ZonaLogisticaId = SetearFk(cliente, "ZonaLogistica");

                    cliente.ZonaGeograficaId = SetearFk(cliente, "ZonaGeografica");

                    cliente.LocalidadId = SetearFk(cliente, "Localidad");

                    cliente.LocalidadDeEntregaId = SetearFk(cliente, "LocalidadDeEntrega");

                    cliente.ProvinciaId = SetearFk(cliente, "Provincia");

                    cliente.RamoId = SetearFk(cliente, "Ramo");

                    cliente.CuentaPadreId = SetearFk(cliente, "CuentaPadre");

                    #region Listas



                    ActualizarColeccionMuchosAMuchos <GrupoCliente>(actualizar.GrupoDinamico, cliente.GrupoDinamico, cntxt); //funciona

                    Action <RutaDeVenta> setFkRutaDeVenta = r =>
                    {
                        //r.DivisionId = this.SetearFk(r, "Division");
                        r.RegionDeVentaId = this.SetearFk(r, "RegionDeVenta");
                        r.SuplenteId      = this.SetearFk(r, "Suplente");
                        r.TitularId       = this.SetearFk(r, "Titular");
                    };

                    ActualizarColeccionMuchosAMuchos <RutaDeVenta>(actualizar.RutasDeVenta, cliente.RutasDeVenta, cntxt, setFkRutaDeVenta); //funciona

                    ActualizarColeccionUnoAMuchos <Telefono>(actualizar.Telefonos, cliente.Telefonos, cntxt);

                    ActualizarColeccionUnoAMuchos <ObservacionCliente>(actualizar.ObservacionCliente, cliente.ObservacionCliente, cntxt);

                    ActualizarColeccionUnoAMuchos <ObservacionCliente>(actualizar.ObservacionClienteLogistica, cliente.ObservacionClienteLogistica, cntxt);

                    Action <TarjetaMayoristaItem> setFkTarjetasCliente = t =>
                    {
                        t.TipoTarjetaId = this.SetearFk(t, "TipoTarjeta");
                    };

                    ActualizarColeccionUnoAMuchos <TarjetaMayoristaItem>(actualizar.TarjetasCliente, cliente.TarjetasCliente, cntxt, setFkTarjetasCliente); //no funciona

                    #endregion

                    SetearValores(cliente, actualizar, cntxt);
                    SetearValores(cliente.Domicilio, actualizar.Domicilio, cntxt);
                    SetearValores(cliente.LugarEntrega, actualizar.LugarEntrega, cntxt);
                    SetearValores(cliente.DatosOld, actualizar.DatosOld, cntxt);

                    Action <ConfiguraCredito> setFkConfiguraCredito = cc =>
                    {
                        cc.CobradorId         = SetearFk(cc, "Cobrador");
                        cc.CondicionDePagoId  = SetearFk(cc, "CondicionDePago");
                        cc.CondicionDePago2Id = SetearFk(cc, "CondicionDePago2");
                        cc.VendedorId         = SetearFk(cc, "Vendedor");
                        cc.VendedorEspecialId = SetearFk(cc, "VendedorEspecial");
                    };

                    ActualizarColeccionUnoAMuchos <ConfiguraCredito>(actualizar.ConfiguraCreditos, cliente.ConfiguraCreditos, cntxt, setFkConfiguraCredito);

                    if (Usuario != null)
                    {
                        cntxt.insertaAuditoria <Cliente>(actualizar, Accion.Modifica, Usuario);
                    }
                    cntxt.SaveChanges();
                }
            }
        }
예제 #22
0
        public override void Insertar(TarjetaClienteMayorista tarjetaClienteMayorista, Core.Modelo.Usuarios.Usuario Usuario, List <Core.Datos.IDbContext> listaContextos)
        {
            listaContextos.ForEach(cntxt =>
            {
                tarjetaClienteMayorista.HeredaId = this.SetearFk(tarjetaClienteMayorista, "Hereda");

                if (tarjetaClienteMayorista.Ramos.Count > 0)
                {
                    foreach (var ramo in tarjetaClienteMayorista.Ramos)
                    {
                        ramo.CanalId   = this.SetearFk(ramo, "Canal");
                        ramo.TarjetaId = this.SetearFk(ramo, "Tarjeta");
                        if (ramo.Id == 0)
                        {
                            cntxt.Entry <Ramo>(ramo).State = EntityState.Added;
                        }
                        else
                        {
                            cntxt.Set <Ramo>().Attach(ramo);
                        }
                    }
                }

                cntxt.Set <TarjetaClienteMayorista>().Add(tarjetaClienteMayorista);
                if (Usuario != null)
                {
                    cntxt.insertaAuditoria <TarjetaClienteMayorista>(tarjetaClienteMayorista, Accion.Agrega, Usuario);
                }
                cntxt.SaveChanges();
            });
        }
예제 #23
0
        public override void Insertar(DocumentoCompra doc, Core.Modelo.Usuarios.Usuario Usuario, List <IDbContext> listaContextos)
        {
            listaContextos.ForEach(cntxt =>
            {
                //carga local de las propiedades FK para que no se dupliquen al momento de grabar.
                if (doc.MovimientoBancario != null)
                {
                    doc.MovimientoBancario.ConceptoMovimientoBancarioId = this.SetearFk(doc.MovimientoBancario, "ConceptoMovimientoBancario");
                }

                if (doc.CuentaBancaria != null)
                {
                    doc.CuentaBancaria.BancoId = this.SetearFk(doc.CuentaBancaria, "Banco");
                }

                doc.AutorizaId  = SetearFk(doc, "Autoriza");
                doc.ProveedorId = SetearFk(doc, "Proveedor");

                //carga las propiedades de listas
                if (doc.DocumentosAsociados.Count > 0)
                {
                    foreach (var docAsoc in doc.DocumentosAsociados)
                    {
                        docAsoc.ProveedorId = this.SetearFk(docAsoc, "Proveedor");
                        if (docAsoc.Id == 0)
                        {
                            cntxt.Entry <DocumentoProveedor>(docAsoc).State = EntityState.Added;
                        }
                        else
                        {
                            cntxt.Set <DocumentoProveedor>().Attach(docAsoc);
                        }
                    }
                }

                if (doc.ItemsConceptos.Count > 0)
                {
                    foreach (var item in doc.ItemsConceptos)
                    {
                        item.ConceptoId = this.SetearFk(item, "Concepto");
                        if (item.Id == 0)
                        {
                            cntxt.Entry <ItemsConceptos>(item).State = EntityState.Added;
                        }
                        else
                        {
                            cntxt.Set <ItemsConceptos>().Attach(item);
                        }
                    }
                }

                if (doc.NotasPendientes.Count > 0)
                {
                    foreach (var nota in doc.NotasPendientes)
                    {
                        nota.AutorizaId  = this.SetearFk(nota, "Autoriza");
                        nota.ProveedorId = this.SetearFk(nota, "Proveedor");
                        if (nota.Id == 0)
                        {
                            cntxt.Entry <NotaPendiente>(nota).State = EntityState.Added;
                        }
                        else
                        {
                            cntxt.Set <NotaPendiente>().Attach(nota);
                        }
                    }
                }

                cntxt.Set <DocumentoCompra>().Add(doc);
                if (Usuario != null)
                {
                    cntxt.insertaAuditoria <DocumentoCompra>(doc, Accion.Agrega, Usuario);
                }
                cntxt.SaveChanges();
            }
                                   );
        }
        public override void Actualizar(RutaDeVenta ruta, Core.Modelo.Usuarios.Usuario Usuario, List<Core.Datos.IDbContext> listaContextos)
        {
            foreach (var cntxt in listaContextos)
            {
                var actualizar = cntxt.BuscarPorId<RutaDeVenta>(ruta.Id, Core.CargarRelaciones.CargarTodo);
                //var actualizar = cntxt.Consultar<RutaDeVenta>(Core.CargarRelaciones.NoCargarNada).Include("Clientes").FirstOrDefault(r => r.Id == ruta.Id);
                if (actualizar != null)
                {
                    //ruta.DivisionId = this.SetearFk(ruta, "Division");

                    ruta.RegionDeVentaId = this.SetearFk(ruta, "RegionDeVenta");

                    ruta.SuplenteId = this.SetearFk(ruta, "Suplente");

                    ruta.TitularId = this.SetearFk(ruta, "Titular");

                    Action<Cliente> setFkClientes = c =>
                    {
                        if (c.DatosOld != null)
                        {
                            //c.DatosOld.ZonaGeograficaId = this.SetearFk(c.DatosOld, "ZonaGeografica");
                            c.DatosOld.RutaDeVentaId = this.SetearFk(c.DatosOld, "RutaDeVenta");
                            c.DatosOld.ListaDePrecioId = this.SetearFk(c.DatosOld, "ListaDePreciosDeVenta");
                        }
                        if (c.Domicilio != null)
                        {
                            c.Domicilio.CalleId = this.SetearFk(c.Domicilio, "Calle");
                        }
                        if (c.LugarEntrega != null)
                        {
                            c.LugarEntrega.CalleId = this.SetearFk(c.LugarEntrega, "Calle");
                        }
                        c.LocalidadDeEntregaId = this.SetearFk(c, "LocalidadDeEntrega");
                        c.LocalidadId = this.SetearFk(c, "Localidad");
                        c.ProvinciaId = this.SetearFk(c, "Provincia");
                        c.RamoId = this.SetearFk(c, "Ramo");
                        c.ZonaGeograficaId = this.SetearFk(c, "ZonaGeografica");
                        c.ZonaLogisticaId = this.SetearFk(c, "ZonaLogistica");
                        foreach (var item in c.ConfiguraCreditos)
                        {
                            item.CobradorId = this.SetearFk(item, "Cobrador");
                            item.VendedorId = this.SetearFk(item, "Vendedor");
                            item.VendedorEspecialId = this.SetearFk(item, "VendedorEspecial");
                            item.CondicionDePagoId = this.SetearFk(item, "CondicionDePago");
                            item.CondicionDePago2Id = this.SetearFk(item, "CondicionDePago2");
                        }
                        foreach (var item in c.RutasDeVenta)
                        {
                            //item.DivisionId = this.SetearFk(item, "Division");
                            item.RegionDeVentaId = this.SetearFk(item, "RegionDeVenta");
                            item.SuplenteId = this.SetearFk(item, "Suplente");
                            item.TitularId = this.SetearFk(item, "Titular");
                        }
                    };

                    ActualizarColeccionMuchosAMuchos<Cliente>(actualizar.Clientes, ruta.Clientes, cntxt, setFkClientes);
                    if (ruta.Vertices != null && ruta.Vertices.Count > 0)
                        ActualizarColeccionUnoAMuchos<Coordenada>(actualizar.Vertices, ruta.Vertices, cntxt);
                    else
                        ActualizarColeccionUnoAMuchos<Coordenada>(actualizar.Vertices, actualizar.Vertices, cntxt); //no necesito actualizar las coordenadas de los vertices porque las cargo desde el kml!

                    SetearValores(ruta, actualizar, cntxt);
                    SetearValores(ruta.DatosOld, actualizar.DatosOld, cntxt);

                    if (Usuario != null)
                        cntxt.insertaAuditoria<RutaDeVenta>(actualizar, Accion.Modifica, Usuario);
                    cntxt.SaveChanges();
                }
            }
        }
        public override void Eliminar(Proveedor proveedor, Core.Modelo.Usuarios.Usuario usuario, Core.Datos.IDbContext cntxt)
        {
            using (var transaccion = cntxt.EmpezarTransaccion())
            {
                try
                {
                    foreach (var tel in proveedor.Telefonos) //ModelBuilder no se encarga
                    {
                        cntxt.Entry <Telefono>(tel).State = EntityState.Deleted;
                    }

                    foreach (var obs in proveedor.Observaciones)
                    {
                        cntxt.Entry <ObservacionProveedor>(obs).State = EntityState.Deleted;
                    }

                    foreach (var contacto in proveedor.Contactos)
                    {
                        foreach (var tel in contacto.Telefonos)
                        {
                            cntxt.Entry <Telefono>(tel).State = EntityState.Deleted;
                        }
                        if (contacto.Domicilio != null)
                        {
                            if (contacto.Domicilio.Id > 0)
                            {
                                this.AgregarAListaParaBorrar(contacto.Domicilio);
                            }
                        }
                    }

                    foreach (var prontoPago in proveedor.ProntoPago)
                    {
                        //if (prontoPago.Id > 0)
                        //    this.AgregarAListaParaBorrar(prontoPago);
                        cntxt.Entry <ProntoPago>(prontoPago).State = EntityState.Deleted;
                    }

                    cntxt.SaveChanges(); //para borrar las listas 1-*

                    this.AgregarAListaParaBorrar(proveedor.DatosOld);

                    //if (proveedor.Domicilio != null)
                    //    if (proveedor.Domicilio.Id > 0)
                    //        this.AgregarAListaParaBorrar(proveedor.Domicilio);

                    var provParaBorrar = cntxt.BuscarPorId <Proveedor>(proveedor.Id, Core.CargarRelaciones.NoCargarNada);

                    cntxt.Entry <Proveedor>(provParaBorrar).State = EntityState.Deleted;

                    cntxt.SaveChanges();

                    this.EliminarGrafo(cntxt);

                    cntxt.insertaAuditoria <Proveedor>(proveedor, Accion.Elimina, usuario); //este metodo lo invoca el Borrar del DbContext en el GrabadorGenerico

                    transaccion.Commit();
                }
                catch (Exception ex)
                {
                    transaccion.Rollback();
                }
            }
        }
예제 #26
0
 protected override void CargarDatos(Core.Modelo.Usuarios.Usuario Entidad)
 {
 }