private void ManagementAutomaticRates(ArticulosModel model, TipoFlujo flujo)
        {
            var tarifas = _db.Tarifas.Where(f => f.empresa == model.Empresa && f.tipoflujo == (int)flujo && f.tipotarifa == (int)TipoTarifa.Especifica && f.asignartarifaalcreararticulos == true).ToList();
            var vector  = flujo == TipoFlujo.Venta ? model.TarifasEspecificasVentas.Lineas : model.TarifasEspecificasCompras.Lineas;



            foreach (var item in tarifas)
            {
                var tarifa = _db.TarifasLin.SingleOrDefault(
                    f => f.empresa == model.Empresa && f.fktarifas == item.id && f.fkarticulos == model.Id);

                if (tarifa == null)
                {
                    tarifa = _db.TarifasLin.Create();
                }

                if (vector.All(f => f.Id != tarifa.fktarifas))
                {
                    tarifa.empresa     = model.Empresa;
                    tarifa.fktarifas   = item.id;
                    tarifa.Unidades    = model.Fkunidades;
                    tarifa.fkarticulos = model.Id;
                    tarifa.descuento   = 0;
                    tarifa.precio      = model.Articulocomentariovista ? 0 : CalcularPrecio(item, model);



                    _db.TarifasLin.AddOrUpdate(tarifa);
                }
            }

            _db.SaveChanges();
        }
        private void ManagementSpecificRates(ArticulosModel model, TipoFlujo flujo)
        {
            var vector = flujo == TipoFlujo.Venta ? model.TarifasEspecificasVentas.Lineas : model.TarifasEspecificasCompras.Lineas;

            foreach (var item in vector)
            {
                var tarifa = _db.TarifasLin.SingleOrDefault(
                    f => f.empresa == model.Empresa && f.fktarifas == item.Id && f.fkarticulos == model.Id);

                if (tarifa == null)
                {
                    tarifa             = _db.TarifasLin.Create();
                    tarifa.empresa     = model.Empresa;
                    tarifa.Unidades    = model.Fkunidades;
                    tarifa.fktarifas   = item.Id;
                    tarifa.fkarticulos = model.Id;
                    tarifa.descuento   = item.Descuento;
                    tarifa.precio      = model.Articulocomentariovista ? 0 : item.Precio;
                    _db.TarifasLin.Add(tarifa);
                }
                else
                {
                    tarifa.Unidades  = model.Fkunidades;
                    tarifa.descuento = item.Descuento;
                    tarifa.precio    = model.Articulocomentariovista ? 0 : item.Precio;
                }
            }

            _db.SaveChanges();
        }
 public IActionResult Upsert(TipoFlujo tipoFlujo)
 {
     if (ModelState.IsValid)
     {
         if (tipoFlujo.Id == 0)
         {
             _unitOfWork.TipoFlujo.Add(tipoFlujo);
         }
         else
         {
             _unitOfWork.TipoFlujo.Update(tipoFlujo);
         }
         _unitOfWork.Save();
         return(RedirectToAction(nameof(Index)));
     }
     return(View(tipoFlujo));
 }
        public IActionResult Upsert(int?id)
        {
            TipoFlujo tipoFlujo = new TipoFlujo();

            if (id == null)
            {
                //this is for create
                return(View(tipoFlujo));
            }
            //this is for edit
            tipoFlujo = _unitOfWork.TipoFlujo.Get(id.GetValueOrDefault());
            if (tipoFlujo == null)
            {
                return(NotFound());
            }
            return(View(tipoFlujo));
        }
        private double GetPrecio(string fkarticulo, TipoFlujo tipoflujo, IProspectoCliente fkcuenta, string fkmonedas = "", string fkregimeniva = "")
        {
            double result = 0;

            var codTarifa = fkcuenta.Fktarifas;
            var tarifa    = _db.Tarifas.Include("TarifasLin").SingleOrDefault(f => f.empresa == Empresa && f.id == codTarifa && f.tipoflujo == (int)tipoflujo);

            if (tarifa != null)
            {
                if (string.IsNullOrEmpty(fkmonedas) || (!string.IsNullOrEmpty(fkmonedas) && tarifa.fkmonedas == Funciones.Qint(fkmonedas)))
                {
                    result = tarifa.TarifasLin.SingleOrDefault(f => f.empresa == Empresa && f.fktarifas == codTarifa && f.fkarticulos == fkarticulo)?.precio ?? 0.0;
                }
            }

            return(result);
        }
        private List <TarifasSistemaArticulosViewModel> GetTarifas(TipoFlujo tipo, string id)
        {
            var list     = _appService.GetTarifasSistema(tipo, true, Empresa);
            var existing = _db.TarifasLin.Where(f => f.empresa == Empresa && f.fkarticulos == id && f.Tarifas.tipotarifa == (int)TipoTarifa.Sistema && f.Tarifas.tipoflujo == (int)tipo).ToList();

            return
                (list.Select(
                     f =>
                     new TarifasSistemaArticulosViewModel()
            {
                Id = f.Id,
                Descripcion = f.Descripcion,
                Obligatorio = f.Obligatorio,
                Precio =
                    existing.SingleOrDefault(
                        j => j.Tarifas.id == f.Id && j.fkarticulos == id)?.precio ?? 0
            }).ToList());
        }
        private string GetCadenaSelectArticulo(string id, string fkcuenta, string fkmonedas, string fkregimeniva, TipoFlujo flujo)
        {
            var sb = new StringBuilder();

            if (flujo == TipoFlujo.Venta)
            {
                sb.Append("select a.categoria as Categoria, case when u.tipototal=1 then convert(bit,1) else convert(bit,0) end as Permitemodificarmetros,a.Piezascaja as Piezascaja, " +
                          " u.id as Fkunidades,u.decimalestotales as [Decimalestotales],u.formula as [Formulas] ,a.id as [Id], a.descripcion as [Descripcion],a.descripcion2 as [Descripcion2],isnull(a.largo,0) as [Largo],isnull(a.ancho,0) as [Ancho],isnull(a.grueso,0) as [Grueso],isnull(a.editarlargo,0) as [Permitemodificarlargo],isnull(a.editarancho,0) as [Permitemodificarancho], " +
                          " isnull(a.editargrueso,0) as [Permitemodificargrueso],mo.id as Fkmonedas,fp.tipofamilia as [Tipofamilia],a.tipogestionlotes as [Tipogestionlotes],isnull(a.lotefraccionable,0) as [Lotefraccionable],a.tipoivavariable as [Tipoivavariable], ");
                sb.Append(" mo.decimales as Decimalesmonedas, mo.cambiomonedabase as Cambiomonedabase,mo.cambiomonedaadicional as Cambiomonedaadicional,");
                sb.Append(" ti.id as Fktiposiva, ti.nombre as Descripcioniva, ti.Porcentajeiva as Porcentajeiva,ti.porcentajerecargoequivalente as PorcentajeRecargoEquivalencia,");
                sb.Append(" isnull(tl.precio, 0.0) as Precio, isnull(a.articulocomentario,0) as Articulocomentario,fp.fkcontador  as Fkcontador ");
                sb.Append(" from articulos as a");
                sb.Append(" inner join Familiasproductos as fp on fp.empresa = a.empresa and fp.id = substring(a.id, 0, 3)");
                sb.Append(" left join unidades as u on u.id = fp.fkunidadesmedida");
                sb.AppendFormat(" left join clientes as cli on cli.empresa = a.empresa and cli.fkcuentas = '{0}'", fkcuenta);
                sb.AppendFormat(" left join prospectos as pro on pro.empresa = a.empresa and pro.fkcuentas = '{0}'", fkcuenta);
                sb.Append(" left join monedas as mo on mo.id = isnull(cli.fkmonedas, pro.fkmonedas)");
                sb.AppendFormat(" left join RegimenIva as ri  on ri.empresa = a.empresa and ri.id = isnull({0}, isnull(cli.fkregimeniva, pro.fkregimeniva))", string.IsNullOrEmpty(fkregimeniva) ? "NULL" : "'" + fkregimeniva + "'");
                sb.Append(" left join TarifasLin as tl on tl.empresa = a.empresa and tl.fktarifas = isnull(cli.fktarifas, pro.fktarifas) and tl.fkarticulos = a.id");
                sb.Append(" left join TiposIva as ti on ti.empresa = a.empresa and");
                sb.Append(" ti.id = (select top 1 case concat(isnull(ri.normal, 0), isnull(ri.recargo, 0), isnull(ri.exentotasa, 0))");
                sb.Append(" when '100'  then gi.fktiposivasinrecargo");
                sb.Append(" when '010'  then gi.fktiposivaconrecargo");
                sb.Append(" when '001'  then gi.fktiposivaexentoiva");
                sb.Append(" end");
                sb.Append(" from GruposIvaLin as gi where gi.empresa = a.empresa and gi.fkgruposiva = a.fkgruposiva and gi.desde <= getdate() order by gi.desde desc)");
                sb.AppendFormat(" where a.empresa = '{0}' and a.id='{1}' and (a.categoria=0 or a.categoria=1)", Empresa, id);
            }
            else
            {
                sb.Append("select a.categoria as Categoria,case when u.tipototal=1 then convert(bit,1) else convert(bit,0) end as Permitemodificarmetros,a.Piezascaja as Piezascaja, " +
                          " u.id as Fkunidades,u.decimalestotales as [Decimalestotales],u.formula as [Formulas] ,a.id as [Id], a.descripcion as [Descripcion],a.descripcion2 as [Descripcion2],isnull(a.largo,0) as [Largo],isnull(a.ancho,0) as [Ancho],isnull(a.grueso,0) as [Grueso],isnull(a.editarlargo,0) as [Permitemodificarlargo],isnull(a.editarancho,0) as [Permitemodificarancho], " +
                          " isnull(a.editargrueso,0) as [Permitemodificargrueso],mo.id as Fkmonedas, fp.tipofamilia as [Tipofamilia],a.tipogestionlotes as [Tipogestionlotes],isnull(a.lotefraccionable,0) as [Lotefraccionable],a.tipoivavariable as [Tipoivavariable], ");
                sb.Append(" mo.decimales as Decimalesmonedas, mo.cambiomonedabase as Cambiomonedabase,mo.cambiomonedaadicional as Cambiomonedaadicional,");
                sb.Append(" ti.id as Fktiposiva, ti.nombre as Descripcioniva, ti.Porcentajeiva as Porcentajeiva,ti.porcentajerecargoequivalente as PorcentajeRecargoEquivalencia,");
                sb.Append(" isnull(tl.precio, 0.0) as Precio, isnull(a.articulocomentario,0) as Articulocomentario,fp.fkcontador  as Fkcontador ");
                sb.Append(" from articulos as a");
                sb.Append(" inner join Familiasproductos as fp on fp.empresa = a.empresa and fp.id = substring(a.id, 0, 3)");
                sb.Append(" left join unidades as u on u.id = fp.fkunidadesmedida");
                sb.AppendFormat(" left join proveedores as cli on cli.empresa = a.empresa and cli.fkcuentas = '{0}'", fkcuenta);
                sb.Append(" left join monedas as mo on mo.id = cli.fkmonedas ");
                sb.AppendFormat(" left join RegimenIva as ri  on ri.empresa = a.empresa and ri.id = isnull({0}, cli.fkregimeniva)", string.IsNullOrEmpty(fkregimeniva) ? "NULL" : "'" + fkregimeniva + "'");
                sb.Append(" left join TarifasLin as tl on tl.empresa = a.empresa and tl.fktarifas = cli.tarifa and tl.fkarticulos = a.id");
                sb.Append(" left join TiposIva as ti on ti.empresa = a.empresa and");
                sb.Append(" ti.id = (select top 1 case concat(isnull(ri.normal, 0), isnull(ri.recargo, 0), isnull(ri.exentotasa, 0))");
                sb.Append(" when '100'  then gi.fktiposivasinrecargo");
                sb.Append(" when '010'  then gi.fktiposivaconrecargo");
                sb.Append(" when '001'  then gi.fktiposivaexentoiva");
                sb.Append(" end");
                sb.Append(" from GruposIvaLin as gi where gi.empresa = a.empresa and gi.fkgruposiva = a.fkgruposiva and gi.desde <= getdate() order by gi.desde desc)");
                sb.AppendFormat(" where a.empresa = '{0}' and a.id='{1}' and (a.categoria=0 or a.categoria=2)", Empresa, id);
            }



            return(sb.ToString());
        }
 public ArticulosDocumentosModel GetArticulo(string id, string fkcuenta, string fkmonedas, string fkregimeniva, TipoFlujo flujo = TipoFlujo.Venta)
 {
     return(_db.Database.SqlQuery <ArticulosDocumentosModel>(GetCadenaSelectArticulo(id, fkcuenta, fkmonedas,
                                                                                     fkregimeniva, flujo)).SingleOrDefault());
 }
        public List <TarifasEspecificasArticulosViewModel> GetTarifas(TipoFlujo flujo, string articulo)
        {
            var serviceTarifas = FService.Instance.GetService(typeof(TarifasModel), _context, _db) as TarifasService;

            return(serviceTarifas.GetTarifasEspecificas(flujo, articulo, Empresa).ToList());
        }
Exemple #10
0
        public static TipoFlujo TipoFlujoTraer(int Flujo)
        {
            TipoFlujo     objRespuesta = new TipoFlujo();
            SqlConnection sqlConexion  = new SqlConnection(CotizacionICRL.strCadenaConexion);
            string        strComando   = "SELECT [idFlujo],[flujoOnBase],[estado],[numeroReclamo],[numeroPoliza],[marcaVehiculo],[modeloVehiculo],[anioVehiculo],[colorVehiculo],[placaVehiculo],[chasisVehiculo],[valorAsegurado],[importacionDirecta],[nombreAsegurado],[docIdAsegurado],[telefonocelAsegurado],[causaSiniestro],[contador],[descripcionSiniestro],[direccionInspeccion],[agenciaAtencion],[fechaSiniestro] FROM [LBCDesa].[dbo].[Flujo] WHERE idFlujo=@idFlujo";
            SqlCommand    sqlComando   = new SqlCommand(strComando, sqlConexion);
            SqlDataReader sqlDatos;

            try
            {
                sqlComando.Parameters.Add("@idFlujo", System.Data.SqlDbType.Int).Value = Flujo;
                sqlConexion.Open();
                sqlDatos = sqlComando.ExecuteReader();
                while (sqlDatos.Read())
                {
                    objRespuesta.idFlujo = Flujo;
                    if (sqlDatos["flujoOnBase"] != DBNull.Value)
                    {
                        objRespuesta.flujoOnBase = Convert.ToString(sqlDatos["flujoOnBase"]);
                    }
                    if (sqlDatos["estado"] != DBNull.Value)
                    {
                        objRespuesta.estado = Convert.ToString(sqlDatos["estado"]);
                    }
                    if (sqlDatos["numeroReclamo"] != DBNull.Value)
                    {
                        objRespuesta.numeroReclamo = Convert.ToString(sqlDatos["numeroReclamo"]);
                    }
                    if (sqlDatos["numeroPoliza"] != DBNull.Value)
                    {
                        objRespuesta.numeroPoliza = Convert.ToString(sqlDatos["numeroPoliza"]);
                    }
                    if (sqlDatos["marcaVehiculo"] != DBNull.Value)
                    {
                        objRespuesta.marcaVehiculo = Convert.ToString(sqlDatos["marcaVehiculo"]);
                    }
                    if (sqlDatos["modeloVehiculo"] != DBNull.Value)
                    {
                        objRespuesta.modeloVehiculo = Convert.ToString(sqlDatos["modeloVehiculo"]);
                    }
                    if (sqlDatos["anioVehiculo"] != DBNull.Value)
                    {
                        objRespuesta.anioVehiculo = Convert.ToString(sqlDatos["anioVehiculo"]);
                    }
                    if (sqlDatos["colorVehiculo"] != DBNull.Value)
                    {
                        objRespuesta.colorVehiculo = Convert.ToString(sqlDatos["colorVehiculo"]);
                    }
                    if (sqlDatos["placaVehiculo"] != DBNull.Value)
                    {
                        objRespuesta.placaVehiculo = Convert.ToString(sqlDatos["placaVehiculo"]);
                    }
                    if (sqlDatos["chasisVehiculo"] != DBNull.Value)
                    {
                        objRespuesta.chasisVehiculo = Convert.ToString(sqlDatos["chasisVehiculo"]);
                    }
                    if (sqlDatos["valorAsegurado"] != DBNull.Value)
                    {
                        objRespuesta.valorAsegurado = Convert.ToString(sqlDatos["valorAsegurado"]);
                    }
                    if (sqlDatos["importacionDirecta"] != DBNull.Value)
                    {
                        objRespuesta.importacionDirecta = Convert.ToString(sqlDatos["importacionDirecta"]);
                    }
                    if (sqlDatos["nombreAsegurado"] != DBNull.Value)
                    {
                        objRespuesta.nombreAsegurado = Convert.ToString(sqlDatos["nombreAsegurado"]);
                    }
                    if (sqlDatos["docIdAsegurado"] != DBNull.Value)
                    {
                        objRespuesta.docIdAsegurado = Convert.ToString(sqlDatos["docIdAsegurado"]);
                    }
                    if (sqlDatos["telefonocelAsegurado"] != DBNull.Value)
                    {
                        objRespuesta.telefonocelAsegurado = Convert.ToString(sqlDatos["telefonocelAsegurado"]);
                    }
                    if (sqlDatos["causaSiniestro"] != DBNull.Value)
                    {
                        objRespuesta.causaSiniestro = Convert.ToString(sqlDatos["causaSiniestro"]);
                    }
                    if (sqlDatos["contador"] != DBNull.Value)
                    {
                        objRespuesta.contador = Convert.ToString(sqlDatos["contador"]);
                    }
                    if (sqlDatos["descripcionSiniestro"] != DBNull.Value)
                    {
                        objRespuesta.descripcionSiniestro = Convert.ToString(sqlDatos["descripcionSiniestro"]);
                    }
                    if (sqlDatos["direccionInspeccion"] != DBNull.Value)
                    {
                        objRespuesta.direccionInspeccion = Convert.ToString(sqlDatos["direccionInspeccion"]);
                    }
                    if (sqlDatos["agenciaAtencion"] != DBNull.Value)
                    {
                        objRespuesta.agenciaAtencion = Convert.ToString(sqlDatos["agenciaAtencion"]);
                    }
                    if (sqlDatos["fechaSiniestro"] != DBNull.Value)
                    {
                        objRespuesta.fechaSiniestro = Convert.ToString(sqlDatos["fechaSiniestro"]);
                    }
                }
                sqlDatos.Close();
            }
            catch (Exception)
            {
                objRespuesta = new TipoFlujo();
            }
            finally
            {
                sqlConexion.Close();
                sqlConexion.Dispose();
            }
            return(objRespuesta);
        }
        public IEnumerable <UltimopreciosistemaModel> GetPreciosSistema(string articulo, TipoFlujo tipo)
        {
            // var list = _appService.GetTarifasSistema(tipo, true, Empresa);
            var existing = _db.TarifasLin.Include("Tarifas").Where(f => f.empresa == Empresa && f.fkarticulos == articulo && f.Tarifas.tipotarifa == (int)TipoTarifa.Sistema && f.Tarifas.tipoflujo == (int)tipo).ToList();

            return
                (existing.Select(
                     f =>
                     new UltimopreciosistemaModel()
            {
                Tarifa = f.Tarifas.descripcion,
                Precio = f.precio ?? 0
            }).ToList());
        }
 public IEnumerable <TarifasEspecificasArticulosViewModel> GetTarifasEspecificas(TipoFlujo tipoflujo, string articulo, string empresa)
 {
     return(_db.Tarifas.SqlQuery(
                "select t.* from tarifas as t inner join tarifaslin as tl on tl.empresa=t.empresa and tl.fktarifas=t.id and tl.fkarticulos=@articulo where t.empresa=@empresa and t.tipoflujo=@tipoflujo and t.tipotarifa=@tipotarifa " +
                " and (t.validodesde is null or t.validodesde<=@fechaactual) and (t.validohasta is null or t.validohasta>=@fechaactual)",
                new object[]
     {
         new SqlParameter("@empresa", empresa),
         new SqlParameter("@articulo", articulo),
         new SqlParameter("@tipoflujo", (int)tipoflujo),
         new SqlParameter("@tipotarifa", (int)TipoTarifa.Especifica),
         new SqlParameter("@fechaactual", DateTime.Now)
     }).Select(f => new TarifasEspecificasArticulosViewModel()
     {
         Descripcion = f.descripcion,
         Id = f.id,
         Fkcuenta = f.fkcuentas,
         Precio = f.TarifasLin.ToList().FirstOrDefault(j => j.fkarticulos == articulo)?.precio ?? 0,
         Obligatorio = f.precioobligatorio ?? false,
         Descuento = f.TarifasLin.ToList().FirstOrDefault(j => j.fkarticulos == articulo)?.descuento ?? 0,
     }).ToList());
 }