public override void create(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var model = obj as TransformacioneslotesModel; // Calcular costesadicionales costexm2 o costexm3 //DocumentosHelpers.GenerarCarpetaAsociada(model, TipoDocumentos.TransformacionesAcabados, _context, _db); CalcularCosteTotalMetros(model.Lineas, model.Costes); var validation = _validationService as TransformacioneslotesValidation; validation.EjercicioId = EjercicioId; RepartirCostesLineas(model.Lineas, model.Costes); //Calculo ID var contador = ServiceHelper.GetNextId <Transformacioneslotes>(_db, Empresa, model.Fkseries); var identificadorsegmento = ""; model.Referencia = ServiceHelper.GetReference <Transformacioneslotes>(_db, model.Empresa, model.Fkseries, contador, model.Fechadocumento.Value, out identificadorsegmento); model.Identificadorsegmento = identificadorsegmento; //CalcularPrecioPiezas(model.Lineas, model.Lineas.Sum(f => f.Precio * f.Metros) ?? 0); foreach (var item in model.Lineas) { item.Precio = Math.Round((double)(item.Precio * item.Metros), 2); } base.create(obj); var trobj = _db.Transformacioneslotes.Single(f => f.empresa == model.Empresa && f.referencia == model.Referencia); model.Id = trobj.id; ModificarArticuloLote(model); _db.SaveChanges(); tran.Complete(); } }
public override void create(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var model = obj as CampañasModel; var validation = _validationService as CampañasValidation; model.Id = NextId(); var appService = new ApplicationHelper(_context); if (model.Fechadocumento == null) { model.Fechadocumento = DateTime.Now; } var contador = ServiceHelper.GetNextId <Campañas>(_db, Empresa, model.Fkseries); var identificadorsegmento = ""; model.Referencia = ServiceHelper.GetReference <Campañas>(_db, model.Empresa, model.Fkseries, contador, model.Fechadocumento.Value, out identificadorsegmento); model.Identificadorsegmento = identificadorsegmento; foreach (var linea in model.Campañas) { linea.Empresa = model.Empresa; linea.Context = model.Context; linea.Fkcampañas = model.Id; } base.create(obj); _db.SaveChanges(); tran.Complete(); } }
//public void ModificarCostes(TransformacioneslotesModel model) //{ // var currentValidationService = _validationService as TransformacioneslotesValidation; // currentValidationService.ModificarCostes = true; // edit(model); // currentValidationService.ModificarCostes = false; //} public void ModificarCostes(TransformacioneslotesModel model)//, List<TransformacioneslotesModel> costesOriginal = null) { var currentValidationService = _validationService as TransformacioneslotesValidation; currentValidationService.ModificarCostes = true; //jmm using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var original = get(Funciones.Qnull(model.get("id"))) as TransformacioneslotesModel; foreach (var item in model.Lineas) { item.Nueva = false; } CalcularCosteTotalMetros(model.Lineas, model.Costes); RepartirCostesLineas(model.Lineas, model.Costes); //edit(model); base.edit(model); var trabajosService = FService.Instance.GetService(typeof(TrabajosModel), _context) as TrabajosService; var trabajosObj = trabajosService.get(model.Fktrabajos) as TrabajosModel; GenerarMovimientosLineasCostes(original.Lineas, original, TipoOperacionService.EliminarCostes, trabajosObj); GenerarMovimientosLineasCostes(model.Lineas, model, TipoOperacionService.InsertarCostes, trabajosObj); _db.SaveChanges(); tran.Complete(); } currentValidationService.ModificarCostes = false; }
public void CreateAdmin(string password) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { if (!_db.Administrador.Any()) { if (string.IsNullOrEmpty(password)) { throw new ValidationException("El password no puede estar vacío"); } var item = _db.Administrador.Create(); item.password = password; _db.Administrador.Add(item); var usuarioAministrador = _db.Usuarios.Create(); usuarioAministrador.id = Guid.Empty; usuarioAministrador.usuario = ApplicationHelper.UsuariosAdministrador; usuarioAministrador.password = password; usuarioAministrador.nombre = ApplicationHelper.UsuariosAdministrador; _db.Usuarios.Add(usuarioAministrador); _db.SaveChanges(); tran.Complete(); } } }
public PedidosComprasModel GenerarPedidoCompraDeLineasPedidos(string fkserie, string fecha, string fkproveedor, IEnumerable <StLineasAsistentePedidos> lineas) { if (!lineas.Any()) { throw new Exception("No existen lineas para generar un pedido de compra"); } using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var result = Helper.fModel.GetModel <PedidosComprasModel>(_context); using (var pedidosService = FService.Instance.GetService(typeof(PedidosModel), _context) as PedidosService) { ImportarCabecera(fkserie, fkproveedor, fecha, result); GenerarLineas(pedidosService, result, result.Lineas, lineas); result.Totales = Recalculartotales(result.Lineas, result.Porcentajedescuentoprontopago ?? 0, result.Porcentajedescuentocomercial ?? 0, result.Importeportes ?? 0, result.Decimalesmonedas).ToList(); result.Importetotaldoc = Math.Round(result.Totales.Sum(f => f.Subtotal) ?? 0.0, result.Decimalesmonedas); create(result); tran.Complete(); return(result); } } }
public override void create(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var model = obj as AcabadosModel; //Hemos puesto a check el bruto if (model.Bruto) { var posibleAcabado = _db.Acabados.Where(f => f.empresa == Empresa && f.bruto == true).Select(f => f.id).SingleOrDefault(); if (!String.IsNullOrEmpty(posibleAcabado)) { var acabadoEnBruto = this.get(posibleAcabado); this.delete(acabadoEnBruto); } } //Llamamos al base base.create(obj); //Guardamos los cambios _db.SaveChanges(); tran.Complete(); } }
public override void edit(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var model = obj as IncidenciasCRMModel; var currentValidationService = _validationService as IncidenciasCRMValidation; var etapaAnterior = _db.IncidenciasCRM.Where(f => f.empresa == model.Empresa && f.id == model.Id).Select(f => f.fketapa).SingleOrDefault(); var s = etapaAnterior.Split('-'); var documento = Funciones.Qint(s[0]); var id = s[1]; var estadoAnterior = _db.Estados.Where(f => f.documento == documento && f.id == id).Select(f => f.tipoestado).SingleOrDefault(); if (model.Cerrado && (estadoAnterior != (int)TipoEstado.Finalizado && estadoAnterior != (int)TipoEstado.Caducado && estadoAnterior != (int)TipoEstado.Anulado)) { var estadoFinalizado = _db.Estados.Where(f => f.documento == (int)DocumentoEstado.Incidencias && f.tipoestado == (int)TipoEstado.Finalizado).SingleOrDefault() ?? _db.Estados.Where(f => f.documento == (int)DocumentoEstado.Todos && f.tipoestado == (int)TipoEstado.Finalizado).SingleOrDefault(); model.Fketapa = estadoFinalizado.documento + "-" + estadoFinalizado.id; currentValidationService.CambiarEstado = true; } base.edit(obj); _db.SaveChanges(); tran.Complete(); } }
public override void delete(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { base.delete(obj); EliminarPreferencias(obj as ConfiguraciongraficasModel); tran.Complete(); } }
public override void edit(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var editado = obj as FamiliasproductosModel; base.edit(editado); _db.SaveChanges(); tran.Complete(); } }
public void SaldarPedidos(OperacionSaldarPedidosModel model, AlbaranesModel entrega) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { entrega.Pedidosaldado = true; SaldarLineaPedidos(model); edit(entrega); _db.SaveChanges(); tran.Complete(); } }
public override void edit(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { //var original = get(Funciones.Qnull(obj.get("id"))) as GrupoMaterialesModel; //var editado = obj as GrupoMaterialesModel; base.edit(obj); _db.SaveChanges(); tran.Complete(); } }
public override void create(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var model = obj as ImputacionCostesModel; var validation = _validationService as ImputacionCostesValidation; validation.EjercicioId = EjercicioId; model.Id = NextId(); var appService = new ApplicationHelper(_context); if (model.Fechadocumento == null) { model.Fechadocumento = DateTime.Now; } var contador = ServiceHelper.GetNextId <ImputacionCostes>(_db, Empresa, model.Fkseries); var identificadorsegmento = ""; model.Referencia = ServiceHelper.GetReference <ImputacionCostes>(_db, model.Empresa, model.Fkseries, contador, model.Fechadocumento.Value, out identificadorsegmento); model.Identificadorsegmento = identificadorsegmento; //Calculo id entradas int index = 1; foreach (var lin in model.LineasLotes) { lin.Empresa = model.Empresa; lin.Fkimputacioncostes = model.Id.Value; lin.Id = index; lin.Empresa = Empresa; index++; } ////Calculo id salidas //index = 1; //foreach (var lin in model.LineasCostes) //{ // lin.Empresa = model.Empresa; // lin.Fkimputacioncostes = model.Id.Value; // lin.Id = index; // lin.Empresa = Empresa; // index++; //} //Llamamos al base base.create(model); //Guardamos los cambios _db.SaveChanges(); tran.Complete(); } }
public override void create(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var model = obj as CircuitoTesoreriaCobrosModel; //Llamamos al base base.create(obj); //Guardamos los cambios _db.SaveChanges(); tran.Complete(); } }
public override void delete(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var objPersistance = _converterModel.EditPersitance(obj); ((CuentasValidation)_validationService).FlagDeleteFromThird = FlagDeleteFromThird; if (_validationService.ValidarBorrar(objPersistance)) { BorrarCuentasAsociadas(obj as CuentasModel); _db.Set <Cuentas>().Remove(objPersistance); _db.SaveChanges(); } tran.Complete(); } }
public override void create(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var model = obj as CarteraVencimientosModel; if (_db.CarteraVencimientos.Any()) { model.Id = _db.CarteraVencimientos.Where(f => f.empresa == Empresa).Select(f => f.id).Max() + 1; } else { model.Id = 0; } if (!model.Tiponumerofactura.HasValue) { model.Tiponumerofactura = 0; } if (!model.Monedabase.HasValue) { model.Monedabase = 0; } if (!model.Monedagiro.HasValue) { model.Monedagiro = 0; } model.Fecha = DateTime.Now; Conversion c = new Conversion(); model.Importeletra = c.enletras(model.Importegiro.ToString()); //Calculo ID var contador = ServiceHelper.GetNextIdContable <CarteraVencimientos>(_db, Empresa, model.Fkseriescontables); var identificadorsegmento = ""; model.Referencia = ServiceHelper.GetReferenceContable <CarteraVencimientos>(_db, model.Empresa, model.Fkseriescontables, contador, model.Fecha.Value, out identificadorsegmento); model.Identificadorsegmento = identificadorsegmento; //Llamamos al base base.create(model); //Guardamos los cambios _db.SaveChanges(); tran.Complete(); } }
//Editar public override void edit(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var original = get(Funciones.Qnull(obj.get("id"))) as ImputacionCostesModel; var editado = obj as ImputacionCostesModel; foreach (var lote in editado.LineasLotes) { lote.Empresa = editado.Empresa; lote.Fkimputacioncostes = editado.Id.Value; } if (original.Integridadreferencialflag == editado.Integridadreferencialflag) { var validation = _validationService as ImputacionCostesValidation; validation.EjercicioId = EjercicioId; var estadosService = FService.Instance.GetService(typeof(EstadosModel), _context, _db) as EstadosService; var listestados = estadosService.GetStates(DocumentoEstado.DivisionesLotes); //Lista de estados var estadoFinalizado = listestados.First(f => f.Tipoestado == TipoEstado.Finalizado); //Repartimos costes lineas y actualizamos las tablas del stock if (editado.Fkestados == estadoFinalizado.CampoId) { //Calcular costesadicionales costexm2 o costexm3 CalcularCosteTotalMetros(editado.LineasLotes.ToList(), editado.LineasCostes.ToList()); //Repartimos los costes en las lineas RepartirCostesLineas(editado.LineasLotes.ToList(), editado.LineasCostes.ToList()); //Generamos el movimiento GenerarMovimientosLineas(editado.LineasLotes, editado, TipoOperacionService.InsertarCostes); } editado.Identificadorsegmento = original.Identificadorsegmento; base.edit(editado); _db.SaveChanges(); tran.Complete(); } else { throw new IntegridadReferencialException(string.Format(General.ErrorIntegridadReferencial, RImputacionCostes.TituloEntidad, original.Referencia)); } } }
public void SetEstado(IModelView model, EstadosModel nuevoEstado) { var currentValidationService = _validationService as TransformacioneslotesValidation; currentValidationService.CambiarEstado = true; using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var editado = model as TransformacioneslotesModel; var original = get(editado.Id.ToString()) as TransformacioneslotesModel; if (original.Integridadreferencialflag == editado.Integridadreferencialflag) { var estadosService = FService.Instance.GetService(typeof(EstadosModel), _context, _db) as EstadosService; var originalStateObj = estadosService.get(original.Fkestados) as EstadosModel; if (originalStateObj.Tipoestado < TipoEstado.Finalizado) { editado.Fkestados = nuevoEstado.CampoId; base.edit(editado); if (nuevoEstado.Tipoestado == TipoEstado.Finalizado) { var trabajosService = FService.Instance.GetService(typeof(TrabajosModel), _context) as TrabajosService; var trabajosObj = trabajosService.get(editado.Fktrabajos) as TrabajosModel; var materialesService = FService.Instance.GetService(typeof(MaterialesModel), _context) as MaterialesService; var materialesObj = materialesService.get(editado.Fkmateriales) as MaterialesModel; RepartirCostesLineas(editado.Lineas, editado.Costes, original.Costes); FinalizarStock(original, editado, trabajosObj, materialesObj); } _db.SaveChanges(); tran.Complete(); } else { throw new Exception("Sólo se pueden modificar transformaciones en estado: Curso o Diseño"); } } else { throw new IntegridadReferencialException(string.Format(General.ErrorIntegridadReferencial, RTransformacioneslotes.TituloEntidad, original.Referencia)); } } currentValidationService.CambiarEstado = false; }
public override void create(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var model = obj as GrupoMaterialesModel; var validation = _validationService as GrupoMaterialesValidation; validation.EjercicioId = EjercicioId; DocumentosHelpers.GenerarCarpetaAsociada(model, TipoDocumentos.GrupoMateriales, _context, _db); //Llamamos al base base.create(obj); //Guardamos los cambios _db.SaveChanges(); tran.Complete(); } }
//Crea un coste variable periodo public override void create(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var model = obj as CostesVariablesPeriodoModel; model.Descripcion_ejercicio = _db.Ejercicios.Where(f => f.id == model.Fkejercicio && f.empresa == model.Empresa).Select(f => f.descripcion).ToString(); int cont = 1; foreach (var linea in model._costes) { linea.Fkejercicio = model.Fkejercicio; cont++; } base.create(obj); _db.SaveChanges(); tran.Complete(); } }
public override void create(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var model = obj as AlbaranesModel; base.create(obj); //EntregarStock(obj as AlbaranesModel); if (model.Tipoalbaran == (int)TipoAlbaran.Devolucion) { GenerarMovimientosLineas(model.Lineas, model, TipoOperacionService.InsertarDevolucionEntregaStock); } else if (model.Tipoalbaran == (int)TipoAlbaran.Reclamacion) { var antiguas = model.Lineas.Where(f => f.Cantidad < 0).ToList(); var nuevas = model.Lineas.Where(f => f.Cantidad > 0).ToList(); GenerarMovimientosLineas(antiguas, model, TipoOperacionService.InsertarDevolucionEntregaStock); GenerarMovimientosLineas(nuevas, model, TipoOperacionService.InsertarEntregaStock); //Cuando creamos el albaran de reclamacion, necesitamos introducir en las lineas del albaran original el id y la referencia del reclamado var original = get(model.idOriginalReclamado.ToString()) as AlbaranesModel; foreach (var linea in original.Lineas) { linea.Fkreclamado = model.Id; linea.Fkreclamadoreferencia = model.Referencia; } base.edit(original); } else { GenerarMovimientosLineas(model.Lineas, model, TipoOperacionService.InsertarEntregaStock); } _db.SaveChanges(); tran.Complete(); } }
public override void delete(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var model = obj as ImputacionCostesModel; //Genera los movimientos de linea sólo si el estado es finalizado var estadosService = FService.Instance.GetService(typeof(EstadosModel), _context, _db) as EstadosService; var listestados = estadosService.GetStates(DocumentoEstado.DivisionesLotes); //Lista de estados var estadoFinalizado = listestados.First(f => f.Tipoestado == TipoEstado.Finalizado); if (model.Fkestados == estadoFinalizado.CampoId) { GenerarMovimientosLineas(model.LineasLotes, model, TipoOperacionService.EliminarCostes); } base.delete(model); _db.SaveChanges(); tran.Complete(); } }
public override void edit(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var original = get(Funciones.Qnull(obj.get("id"))) as TransformacioneslotesModel; var editado = obj as TransformacioneslotesModel; if (original.Integridadreferencialflag == editado.Integridadreferencialflag) { var validation = _validationService as TransformacioneslotesValidation; validation.EjercicioId = EjercicioId; DocumentosHelpers.GenerarCarpetaAsociada(editado, TipoDocumentos.TransformacionesAcabados, _context, _db); // Calcular costesadicionales costexm2 o costexm3 CalcularCosteTotalMetros(editado.Lineas, editado.Costes); RepartirCostesLineas(editado.Lineas, editado.Costes, original.Costes); base.edit(obj); var trabajosService = FService.Instance.GetService(typeof(TrabajosModel), _context) as TrabajosService; var trabajosObj = trabajosService.get(editado.Fktrabajos) as TrabajosModel; var materialesService = FService.Instance.GetService(typeof(MaterialesModel), _context) as MaterialesService; var materialesObj = materialesService.get(editado.Fkmateriales) as MaterialesModel; //ActualizarStock(original,editado, trabajosObj); //GenerarMovimientosLineas(original.Lineas, original, TipoOperacionService.ActualizarTransformacionloteStock, trabajosObj); //GenerarMovimientosLineas(editado.Lineas, editado, TipoOperacionService.InsertarTransformacionloteStock, trabajosObj); GenerarMovimientosLineas(original.Lineas, original, TipoOperacionService.ActualizarTransformacionloteStock, trabajosObj, materialesObj, false); GenerarMovimientosLineas(editado.Lineas, editado, TipoOperacionService.InsertarTransformacionloteStock, trabajosObj, materialesObj, false); _db.SaveChanges(); tran.Complete(); } else { throw new IntegridadReferencialException(string.Format(General.ErrorIntegridadReferencial, RTransformacioneslotes.TituloEntidad, original.Referencia)); } } }
//Crear los correos del seguimiento public void createLineasCorreos(SeguimientosCorreoModel correo) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { if (_db.SeguimientosCorreo.Any(f => f.empresa == Empresa && f.fkseguimientos == correo.Fkseguimientos && f.fkorigen == correo.Fkorigen)) { var id = _db.SeguimientosCorreo.Where(f => f.empresa == Empresa && f.fkseguimientos == correo.Fkseguimientos && f.fkorigen == correo.Fkorigen).Max(f => (f.id) + 1); { correo.Id = id; } } else { correo.Id = 0; } base.create(correo); _db.SaveChanges(); tran.Complete(); } }
public override void delete(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var model = obj as SeguimientosModel; var s = model.Fketapa.Split('-'); var documento = Funciones.Qint(s[0]); var id = s[1]; var tipoEstado = _db.Estados.Where(f => f.documento == documento && f.id == id).Select(f => f.tipoestado).SingleOrDefault(); if (tipoEstado != (int)TipoEstado.Finalizado && tipoEstado != (int)TipoEstado.Caducado && tipoEstado != (int)TipoEstado.Anulado) { base.delete(obj); _db.SaveChanges(); tran.Complete(); } else { throw new ValidationException(General.ErrorDocumentoFinalizado); } } }
public override void create(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var newItem = _converterModel.CreatePersitance(obj); if (_validationService.ValidarGrabar(newItem)) { _db.Set <Configuraciongraficas>().Add(newItem); try { _db.SaveChanges(); obj.set("Codigo", newItem.id); } catch (DbUpdateException ex) { if (ex.InnerException != null && ex.InnerException.InnerException != null) { var inner = ex.InnerException.InnerException as SqlException; if (inner != null) { if (inner.Number == 2627 || inner.Number == 2601) { throw new ValidationException(General.ErrorRegistroExistente); } } } throw; } } ActualizarPreferencias(obj as ConfiguraciongraficasModel); tran.Complete(); } }
public override void edit(IModelView obj) { var currentValidationService = _validationService as TraspasosalmacenValidation; if (!currentValidationService.ModificarCostes) { throw new NotImplementedException(); } using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var original = get(Funciones.Qnull(obj.get("id"))) as TraspasosalmacenModel; var editado = obj as TraspasosalmacenModel; RepartirCostesLineas(editado.Lineas, editado.Costes, original.Costes); ModificarLotesLineas(editado); base.edit(obj); //ActualizarStock(original, obj as TraspasosalmacenModel); GenerarMovimientosLineas(original.Lineas, original, TipoOperacionService.EliminarTraspasosalmacen); GenerarMovimientosLineas(editado.Lineas, editado, TipoOperacionService.ActualizarTraspasosalmacen); _db.SaveChanges(); tran.Complete(); } }
public override void delete(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { } }
public override void edit(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var model = obj as SeguimientosModel; var currentValidationService = _validationService as SeguimientosValidation; var estadoFinalizado = new Estados(); if (model.Tipo == (int)DocumentoEstado.Oportunidades) { var modelPadre = _db.Oportunidades.Where(f => f.empresa == Empresa && f.referencia == model.Origen).FirstOrDefault(); if (model.Cerrado) { modelPadre.cerrado = true; modelPadre.fechacierre = model.Fecharesolucion; modelPadre.fkreaccion = model.Fkreaccion; estadoFinalizado = _db.Estados.Where(f => f.documento == (int)DocumentoEstado.Oportunidades && f.tipoestado == (int)TipoEstado.Finalizado).SingleOrDefault() ?? _db.Estados.Where(f => f.documento == (int)DocumentoEstado.Todos && f.tipoestado == (int)TipoEstado.Finalizado).SingleOrDefault(); } modelPadre.fketapa = model.Fketapa; modelPadre.fechaultimoseguimiento = model.Fechadocumento; if (model.Fechaproximoseguimiento != null) { modelPadre.fechaproximoseguimiento = model.Fechaproximoseguimiento; } var converterModel = FConverterModel.Instance.CreateConverterModelService <OportunidadesModel, Oportunidades>(_context, _db, Empresa); var modelview = converterModel.GetModelView(modelPadre); //Rai //Hay que tener en cuenta que si se edita un seguimiento, podrían cambiarle el coste, //luego al grabar hay que restar el coste que tenga y sumar el que haya al grabarlo. var antiguocosteSeguimiento = _db.Seguimientos.Where(f => f.empresa == Empresa && f.origen == model.Origen && f.id == model.Id).Select(f => f.coste).FirstOrDefault(); modelPadre.coste -= antiguocosteSeguimiento; modelPadre.coste += model.Coste; var service = FService.Instance.GetService(typeof(OportunidadesModel), _context); service.edit(modelview); } else if (model.Tipo == (int)DocumentoEstado.Proyectos) { var modelPadre = _db.Proyectos.Where(f => f.empresa == Empresa && f.referencia == model.Origen).FirstOrDefault(); if (model.Cerrado) { modelPadre.cerrado = true; modelPadre.fechacierre = model.Fecharesolucion; modelPadre.fkreaccion = model.Fkreaccion; estadoFinalizado = _db.Estados.Where(f => f.documento == (int)DocumentoEstado.Proyectos && f.tipoestado == (int)TipoEstado.Finalizado).SingleOrDefault() ?? _db.Estados.Where(f => f.documento == (int)DocumentoEstado.Todos && f.tipoestado == (int)TipoEstado.Finalizado).SingleOrDefault(); } modelPadre.fketapa = model.Fketapa; modelPadre.fechaultimoseguimiento = model.Fechadocumento; if (model.Fechaproximoseguimiento != null) { modelPadre.fechaproximoseguimiento = model.Fechaproximoseguimiento; } var converterModel = FConverterModel.Instance.CreateConverterModelService <ProyectosModel, Proyectos>(_context, _db, Empresa); var modelview = converterModel.GetModelView(modelPadre); //Rai //Hay que tener en cuenta que si se edita un seguimiento, podrían cambiarle el coste, //luego al grabar hay que restar el coste que tenga y sumar el que haya al grabarlo. var antiguocosteSeguimiento = _db.Seguimientos.Where(f => f.empresa == Empresa && f.origen == model.Origen && f.id == model.Id).Select(f => f.coste).FirstOrDefault(); modelPadre.coste -= antiguocosteSeguimiento; modelPadre.coste += model.Coste; var service = FService.Instance.GetService(typeof(ProyectosModel), _context); service.edit(modelview); } else if (model.Tipo == (int)DocumentoEstado.Campañas) { var modelPadre = _db.Campañas.Where(f => f.empresa == Empresa && f.referencia == model.Origen).FirstOrDefault(); if (model.Cerrado) { modelPadre.cerrado = true; modelPadre.fechacierre = model.Fecharesolucion; modelPadre.fkreaccion = model.Fkreaccion; estadoFinalizado = _db.Estados.Where(f => f.documento == (int)DocumentoEstado.Campañas && f.tipoestado == (int)TipoEstado.Finalizado).SingleOrDefault() ?? _db.Estados.Where(f => f.documento == (int)DocumentoEstado.Todos && f.tipoestado == (int)TipoEstado.Finalizado).SingleOrDefault(); } modelPadre.fketapa = model.Fketapa; modelPadre.fechaultimoseguimiento = model.Fechadocumento; if (model.Fechaproximoseguimiento != null) { modelPadre.fechaproximoseguimiento = model.Fechaproximoseguimiento; } var converterModel = FConverterModel.Instance.CreateConverterModelService <CampañasModel, Campañas>(_context, _db, Empresa); var modelview = converterModel.GetModelView(modelPadre); //Rai //Hay que tener en cuenta que si se edita un seguimiento, podrían cambiarle el coste, //luego al grabar hay que restar el coste que tenga y sumar el que haya al grabarlo. var antiguocosteSeguimiento = _db.Seguimientos.Where(f => f.empresa == Empresa && f.origen == model.Origen && f.id == model.Id).Select(f => f.coste).FirstOrDefault(); modelPadre.coste -= antiguocosteSeguimiento; modelPadre.coste += model.Coste; var service = FService.Instance.GetService(typeof(CampañasModel), _context); service.edit(modelview); } else if (model.Tipo == (int)DocumentoEstado.Incidencias) { var modelPadre = _db.IncidenciasCRM.Where(f => f.empresa == Empresa && f.referencia == model.Origen).FirstOrDefault(); if (model.Cerrado) { modelPadre.cerrado = true; modelPadre.fechacierre = model.Fecharesolucion; modelPadre.fkreaccion = model.Fkreaccion; estadoFinalizado = _db.Estados.Where(f => f.documento == (int)DocumentoEstado.Incidencias && f.tipoestado == (int)TipoEstado.Finalizado).SingleOrDefault() ?? _db.Estados.Where(f => f.documento == (int)DocumentoEstado.Todos && f.tipoestado == (int)TipoEstado.Finalizado).SingleOrDefault(); } modelPadre.fketapa = model.Fketapa; modelPadre.fechaultimoseguimiento = model.Fechadocumento; if (model.Fechaproximoseguimiento != null) { modelPadre.fechaproximoseguimiento = model.Fechaproximoseguimiento; } var converterModel = FConverterModel.Instance.CreateConverterModelService <IncidenciasCRMModel, IncidenciasCRM>(_context, _db, Empresa); var modelview = converterModel.GetModelView(modelPadre); //Rai //Hay que tener en cuenta que si se edita un seguimiento, podrían cambiarle el coste, //luego al grabar hay que restar el coste que tenga y sumar el que haya al grabarlo. var antiguocosteSeguimiento = _db.Seguimientos.Where(f => f.empresa == Empresa && f.origen == model.Origen && f.id == model.Id).Select(f => f.coste).FirstOrDefault(); modelPadre.coste -= antiguocosteSeguimiento; modelPadre.coste += model.Coste; var service = FService.Instance.GetService(typeof(IncidenciasCRMModel), _context); service.edit(modelview); } var etapaAnterior = _db.Seguimientos.Where(f => f.empresa == model.Empresa && f.id == model.Id).Select(f => f.fketapa).SingleOrDefault(); var s = etapaAnterior.Split('-'); var documento = Funciones.Qint(s[0]); var id = s[1]; var estadoAnterior = _db.Estados.Where(f => f.documento == documento && f.id == id).Select(f => f.tipoestado).SingleOrDefault(); if (model.Cerrado && (estadoAnterior != (int)TipoEstado.Finalizado && estadoAnterior != (int)TipoEstado.Caducado && estadoAnterior != (int)TipoEstado.Anulado)) { model.Fketapa = estadoFinalizado.documento + "-" + estadoFinalizado.id; currentValidationService.CambiarEstado = true; } base.edit(obj); _db.SaveChanges(); tran.Complete(); } }
public override void create(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var model = obj as SeguimientosModel; var currentValidationService = _validationService as SeguimientosValidation; var estadoFinalizado = new Estados(); model.Id = NextId(); if (model.Fechadocumento == null) { model.Fechadocumento = DateTime.Now; } if (model.Tipo == (int)DocumentoEstado.Oportunidades) { var modelPadre = _db.Oportunidades.Where(f => f.empresa == Empresa && f.referencia == model.Origen).FirstOrDefault(); if (model.Cerrado) { modelPadre.cerrado = true; modelPadre.fechacierre = model.Fecharesolucion; modelPadre.fkreaccion = model.Fkreaccion; estadoFinalizado = _db.Estados.Where(f => f.documento == (int)DocumentoEstado.Oportunidades && f.tipoestado == (int)TipoEstado.Finalizado).SingleOrDefault() ?? _db.Estados.Where(f => f.documento == (int)DocumentoEstado.Todos && f.tipoestado == (int)TipoEstado.Finalizado).SingleOrDefault(); } modelPadre.fketapa = model.Fketapa; modelPadre.fechaultimoseguimiento = model.Fechadocumento; if (model.Fechaproximoseguimiento != null) { modelPadre.fechaproximoseguimiento = model.Fechaproximoseguimiento; } //Rai //Se van totalizando los costes imputados de los seguimientos modelPadre.coste += model.Coste; var converterModel = FConverterModel.Instance.CreateConverterModelService <OportunidadesModel, Oportunidades>(_context, _db, Empresa); var modelview = converterModel.GetModelView(modelPadre); var service = FService.Instance.GetService(typeof(OportunidadesModel), _context); service.edit(modelview); } else if (model.Tipo == (int)DocumentoEstado.Proyectos) { var modelPadre = _db.Proyectos.Where(f => f.empresa == Empresa && f.referencia == model.Origen).FirstOrDefault(); if (model.Cerrado) { modelPadre.cerrado = true; modelPadre.fechacierre = model.Fecharesolucion; modelPadre.fkreaccion = model.Fkreaccion; estadoFinalizado = _db.Estados.Where(f => f.documento == (int)DocumentoEstado.Proyectos && f.tipoestado == (int)TipoEstado.Finalizado).SingleOrDefault() ?? _db.Estados.Where(f => f.documento == (int)DocumentoEstado.Todos && f.tipoestado == (int)TipoEstado.Finalizado).SingleOrDefault(); } modelPadre.fketapa = model.Fketapa; modelPadre.fechaultimoseguimiento = model.Fechadocumento; if (model.Fechaproximoseguimiento != null) { modelPadre.fechaproximoseguimiento = model.Fechaproximoseguimiento; } //Rai //Se van totalizando los costes imputados de los seguimientos modelPadre.coste += model.Coste; var converterModel = FConverterModel.Instance.CreateConverterModelService <ProyectosModel, Proyectos>(_context, _db, Empresa); var modelview = converterModel.GetModelView(modelPadre); var service = FService.Instance.GetService(typeof(ProyectosModel), _context); service.edit(modelview); } else if (model.Tipo == (int)DocumentoEstado.Campañas) { var modelPadre = _db.Campañas.Where(f => f.empresa == Empresa && f.referencia == model.Origen).FirstOrDefault(); if (model.Cerrado) { modelPadre.cerrado = true; modelPadre.fechacierre = model.Fecharesolucion; modelPadre.fkreaccion = model.Fkreaccion; estadoFinalizado = _db.Estados.Where(f => f.documento == (int)DocumentoEstado.Campañas && f.tipoestado == (int)TipoEstado.Finalizado).SingleOrDefault() ?? _db.Estados.Where(f => f.documento == (int)DocumentoEstado.Todos && f.tipoestado == (int)TipoEstado.Finalizado).SingleOrDefault(); } modelPadre.fketapa = model.Fketapa; modelPadre.fechaultimoseguimiento = model.Fechadocumento; if (model.Fechaproximoseguimiento != null) { modelPadre.fechaproximoseguimiento = model.Fechaproximoseguimiento; } //Rai //Se van totalizando los costes imputados de los seguimientos modelPadre.coste += model.Coste; var converterModel = FConverterModel.Instance.CreateConverterModelService <CampañasModel, Campañas>(_context, _db, Empresa); var modelview = converterModel.GetModelView(modelPadre); var service = FService.Instance.GetService(typeof(CampañasModel), _context); service.edit(modelview); } else if (model.Tipo == (int)DocumentoEstado.Incidencias) { var modelPadre = _db.IncidenciasCRM.Where(f => f.empresa == Empresa && f.referencia == model.Origen).FirstOrDefault(); if (model.Cerrado) { modelPadre.cerrado = true; modelPadre.fechacierre = model.Fecharesolucion; modelPadre.fkreaccion = model.Fkreaccion; estadoFinalizado = _db.Estados.Where(f => f.documento == (int)DocumentoEstado.Incidencias && f.tipoestado == (int)TipoEstado.Finalizado).SingleOrDefault() ?? _db.Estados.Where(f => f.documento == (int)DocumentoEstado.Todos && f.tipoestado == (int)TipoEstado.Finalizado).SingleOrDefault(); } modelPadre.fketapa = model.Fketapa; modelPadre.fechaultimoseguimiento = model.Fechadocumento; if (model.Fechaproximoseguimiento != null) { modelPadre.fechaproximoseguimiento = model.Fechaproximoseguimiento; } //Rai //Se van totalizando los costes imputados de los seguimientos modelPadre.coste += model.Coste; var converterModel = FConverterModel.Instance.CreateConverterModelService <IncidenciasCRMModel, IncidenciasCRM>(_context, _db, Empresa); var modelview = converterModel.GetModelView(modelPadre); var service = FService.Instance.GetService(typeof(IncidenciasCRMModel), _context); service.edit(modelview); } var etapaAnterior = _db.Seguimientos.Where(f => f.empresa == model.Empresa && f.id == model.Id).Select(f => f.fketapa).SingleOrDefault(); var estadoAnterior = 0; if (etapaAnterior != null) { var s = etapaAnterior.Split('-'); var documento = Funciones.Qint(s[0]); var id = s[1]; estadoAnterior = _db.Estados.Where(f => f.documento == documento && f.id == id).Select(f => f.tipoestado).SingleOrDefault() ?? 0; } if (model.Cerrado && (estadoAnterior != (int)TipoEstado.Finalizado && estadoAnterior != (int)TipoEstado.Caducado && estadoAnterior != (int)TipoEstado.Anulado)) { model.Fketapa = estadoFinalizado.documento + "-" + estadoFinalizado.id; currentValidationService.CambiarEstado = true; } foreach (var linea in model.Correos) { linea.Empresa = model.Empresa; linea.Context = model.Context; linea.Fkseguimientos = model.Id; linea.Fkorigen = model.Origen; } base.create(obj); _db.SaveChanges(); tran.Complete(); } }
public override void create(IModelView obj) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { var model = obj as DivisionLotesModel; //Calculo id entradas int index = 1; foreach (var lin in model.LineasEntrada) { lin.Id = index; index++; } //Calculo id salidas index = 1; foreach (var lin in model.LineasSalida) { lin.Id = index; index++; } //Validacion previa para las salidas. var validacionPrevia = _validationService as DivisionLotesValidation; validacionPrevia.ValidarSalidas(model); validacionPrevia.ValidarEntradas(model); //Calculamos los lotes de las lineas generadas ModificarLotesLineas(model); //Costes de las entradas var lotesService = new LotesService(_context); CalcularPrecioPiezasEntrada(model.LineasEntrada, model.LineasSalida.Sum(f => lotesService.GetByReferencia(string.Format("{0}{1}", f.Lote, f.Tabla)).Costeneto) ?? 0); //Costes adicionales RepartirCostesLineas(model.LineasEntrada, model.Costes); //Creamos la referencia var contador = ServiceHelper.GetNextId <DivisionLotes>(_db, Empresa, model.Fkseries); var identificadorsegmento = ""; model.Referencia = ServiceHelper.GetReference <DivisionLotes>(_db, model.Empresa, model.Fkseries, contador, model.Fechadocumento.Value, out identificadorsegmento); model.Identificadorsegmento = identificadorsegmento; //Cuando se crea la Division de lotes, pasa de en curso a finalizado var estadosService = FService.Instance.GetService(typeof(EstadosModel), _context, _db) as EstadosService; var listestados = estadosService.GetStates(DocumentoEstado.DivisionesLotes); //Lista de estados var estado = listestados.First(f => f.Tipoestado == TipoEstado.Finalizado); model.Fkestados = estado.CampoId; //Llamamos al base base.create(obj); //Generamos movimientos de salida GenerarMovimientosLineasSalida(model.LineasSalida, model, TipoOperacionService.InsertarDivisionLotesSalidaStock); //Generamos movimientos de entrada GenerarMovimientosLineasEntrada(model.LineasEntrada.ToList(), model, TipoOperacionService.InsertarDivisionLotesEntradaStock); //Guardamos los cambios _db.SaveChanges(); tran.Complete(); } }