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();
            }
        }
Пример #2
0
        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;
        }
Пример #4
0
        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();
                }
            }
        }
Пример #5
0
        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);
                }
            }
        }
Пример #6
0
        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();
     }
 }
Пример #10
0
 public void SaldarPedidos(OperacionSaldarPedidosModel model, AlbaranesModel entrega)
 {
     using (var tran = TransactionScopeBuilder.CreateTransactionObject())
     {
         entrega.Pedidosaldado = true;
         SaldarLineaPedidos(model);
         edit(entrega);
         _db.SaveChanges();
         tran.Complete();
     }
 }
Пример #11
0
 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();
     }
 }
Пример #12
0
        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();
            }
        }
Пример #14
0
        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();
            }
        }
Пример #16
0
        //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;
        }
Пример #18
0
        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();
            }
        }
Пример #19
0
    //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();
        }
    }
Пример #20
0
        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();
            }
        }
Пример #21
0
        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();
            }
        }
Пример #27
0
 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();
            }
        }
Пример #30
0
        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();
            }
        }