public ActionResult AgregarProductoFertilizantes([ModelBinder(typeof(DevExpressEditorsBinder))] PresupuestoProductoViewModel producto) { IRepositoryWrapper _repo = new RepositoryWrapper(); if (ModelState.IsValid) { int divisionId = -1; short regionId = -1; if (!string.IsNullOrWhiteSpace(producto.RegionDivisionID)) { string[] divisionRegion = producto.RegionDivisionID.Split(';'); divisionId = Convert.ToInt32(divisionRegion[0]); regionId = Convert.ToInt16(divisionRegion[1]); } bool existeProducto = _unitOfWork.GetRepositoryInstance <PreFertilizanteBaseTotal>() .GetExists(a => a.Ejercicio == producto.Ejercicio && a.VersionPresupuestoId == producto.VersionId && a.Clave_Empresa == producto.EmpresaID && a.Clave_Sucursal == producto.SucursalID && a.Clave_Grupo == producto.GrupoID && a.Clave_Familia == producto.FamiliaID && a.Tipocliente.Trim() == producto.TipoClienteID.Trim()); if (existeProducto) { ViewBag.ErrorMessage = "* EL PRODUCTO SELECCIONADO YA EXISTE EN EL PRESUPUESTO ACTUAL"; return(View(producto)); } // CUANDO NO EXISTA SE DEBE AGREGAR AL PRESUPUESTO ACTUAL string descFamilia = _repo.Catalogos.GetNombreFamilia(producto.FamiliaID, producto.EmpresaID); //string.Empty; //var familia = _unitOfWork.GetRepositoryInstance<Cat_Familias>() // .GetFirstOrDefaultByParameter(f => f.Clave_Familia == producto.FamiliaID); //if (familia != null) // descFamilia = familia.Desc_Familia; string descGrupo = string.Empty; var grupo = _unitOfWork.GetRepositoryInstance <Cat_Grupos>() .GetFirstOrDefaultByParameter(g => g.Clave_Grupo == producto.GrupoID); if (grupo != null) { descGrupo = grupo.Desc_Grupo; } //string descProducto = string.Empty; //var prod = _unitOfWork.GetRepositoryInstance<Cat_Productos>() // .GetFirstOrDefaultByParameter(p => p.Clave_Empresa == producto.EmpresaID && p.Clave_Producto == producto.ProductoID); //if (prod != null)//&& producto.FamiliaID == 101) // descProducto = prod.Desc_Producto; string descRegion = string.Empty; var reg = _unitOfWork.GetRepositoryInstance <Cat_Regiones>() .GetFirstOrDefaultByParameter(r => r.Clave_Empresa == producto.EmpresaID && r.Clave_Region == regionId); if (reg != null) { descRegion = reg.Desc_Region; } string descSucursal = string.Empty; var suc = _unitOfWork.GetRepositoryInstance <Cat_Sucursales>() .GetFirstOrDefaultByParameter(s => s.Clave_Empresa == producto.EmpresaID && s.Clave_Sucursal == producto.SucursalID); if (suc != null) { descSucursal = suc.Desc_Sucursal; } decimal porcentajeMargen = 0m; if (producto.Toneladas == 0m) { producto.PrecioVenta = 0m; } else { producto.PrecioVenta = producto.Venta / producto.Toneladas; } if (producto.Venta == 0m) { porcentajeMargen = 0m; } else { porcentajeMargen = producto.UtilidadBruta / producto.Venta; } PreFertilizanteBaseTotal pbt = new PreFertilizanteBaseTotal { AbrImporte = 0m, AbrMargen = 0m, AbrTons = 0m, AgoImporte = 0m, AgoMargen = 0m, AgoTons = 0m, Cantidad = producto.Toneladas, Clave_Empresa = producto.EmpresaID, Clave_Familia = producto.FamiliaID, Clave_Grupo = producto.GrupoID, Clave_Producto = producto.ProductoID, Clave_Sucursal = producto.SucursalID, Costo_Importe = 0m, Costo_Unitario = 0m, Descuento_Importe = 0m, Desc_Familia = descFamilia, Desc_Marca = string.Empty, Desc_Sucursal = descSucursal, DicImporte = producto.Venta, DicMargen = producto.UtilidadBruta, DicTons = producto.Toneladas, Ejercicio = (short)producto.Ejercicio, EneImporte = 0m, EneMargen = 0m, EneTons = 0m, FebImporte = 0m, FebMargen = 0m, FebTons = 0m, JulImporte = 0m, JulMargen = 0m, JulTons = 0m, JunImporte = 0m, JunMargen = 0m, JunTons = 0m, MargenBruto = producto.UtilidadBruta, MarImporte = 0m, MarMargen = 0m, MarTons = 0m, MayImporte = 0m, MayMargen = 0m, MayTons = 0m, NovImporte = 0m, NovMargen = 0m, NovTons = 0m, OctImporte = 0m, OctMargen = 0m, OctTons = 0m, PorcentajeMargen = (double)porcentajeMargen, PrecioVenta = producto.PrecioVenta, Precio_Importe = producto.Venta, Precio_Unitario = 0m, PresupuestoMargen = producto.UtilidadBruta, PresupuestoTons = producto.Toneladas, PresupuestoVentas = producto.Venta, PtjeIncEspecificoMG = 0d, PtjeIncEspecificoTons = 0d, PtjeIncGeneralPrecioVenta = 0d, PtjeIncGeneralTons = 0d, SepImporte = 0m, SepMargen = 0m, SepTons = 0m, Tipocliente = producto.TipoClienteID, VersionPresupuestoId = producto.VersionId, Clave_Region = regionId, Desc_Grupo = descGrupo, Desc_Region = descRegion }; _unitOfWork.GetRepositoryInstance <PreFertilizanteBaseTotal>().Add(pbt); long pbtID = pbt.Oid; string[] nombreMeses = new string[] { "TODOS", "ENERO", "FEBRERO", "MARZO", "ABRIL", "MAYO", "JUNIO", "JULIO", "AGOSTO", "SEPTIEMBRE", "OCTUBRE", "NOVIEMBRE", "DICIEMBRE" }; // SE AGREGAN LOS MESES for (short i = 0; i < 12; i++) { short mes = i; mes += 1; PreFertilizanteMensual pm = new PreFertilizanteMensual { BaseTotalId = pbtID, DescuentoBase = 0m, Importe = (mes == 12) ? producto.Venta : 0m, ImporteBase = (mes == 12) ? producto.Venta : 0m, Margen = (mes == 12) ? producto.UtilidadBruta : 0m, MargenBase = (mes == 12) ? producto.UtilidadBruta : 0m, Mes = mes, MesNombre = nombreMeses[mes], Orden = mes, PrecioVenta = producto.PrecioVenta, PrecioVentaBase = producto.PrecioVenta, PrecioVentaManual = false, PtjeMargen = (double)porcentajeMargen * 100d, PtjeMargenBase = (double)porcentajeMargen * 100d, PtjeMargenManual = false, ToneladaManual = false, Toneladas = (mes == 12) ? producto.Toneladas : 0m, ToneladasBase = (mes == 12) ? producto.Toneladas : 0m, VersionPresupuestoId = producto.VersionId }; _unitOfWork.GetRepositoryInstance <PreFertilizanteMensual>().Add(pm); } return(RedirectToAction("Fertilizantes", "Versiones")); } ViewBag.ErrorMessage = "* LOS DATOS PARA AGREGAR EL PRODUCTO AL PRESUPUESTO TIENE ERRORES O ESTA INCOMPLETA"; return(View(producto)); }
public ActionResult AgregarProductoFertilizantes() { var model = new PresupuestoProductoViewModel(); DateTime _fecha = _unitOfWork.getDateTimeFromServer(); int _versionID = FTPresupuestoProvider.getVersionPresupuestoIdByTipo(enumTipoDePresupuesto.FERTILIZANTES); VersionPresupuesto _version = _unitOfWork.GetRepositoryInstance <VersionPresupuesto>().GetFirstOrDefault(_versionID); model.Ejercicio = _version.Ejercicio; model.Consecutivo = _version.Consecutivo; model.VersionId = _version.VersionPresupuestoId; model.Observaciones = _version.Observaciones; int anioActual = _fecha.Year; int mesActual = _fecha.Month; if (mesActual > 9) { if (anioActual >= _version.Ejercicio) { model.Ejercicio = anioActual + 1; //model.Consecutivo = 1; //model.VersionId = 0; model.Observaciones = string.Empty; } } else { model.Ejercicio = anioActual; //model.Consecutivo = 1; //model.VersionId = 0; model.Observaciones = string.Empty; } if (anioActual == _version.Ejercicio) { if (mesActual > 9) { model.Ejercicio = anioActual + 1; //model.Consecutivo = 1; //model.VersionId = 0; model.Observaciones = string.Empty; } else { model.Ejercicio = anioActual; //model.Consecutivo = 1; //model.VersionId = 0; model.Observaciones = string.Empty; } } //if (anioActual == _version.Ejercicio && mesActual > 9) //{ // model.Ejercicio = anioActual + 1; // model.Consecutivo = 1; // model.VersionId = 0; // model.Observaciones = string.Empty; //} //if (anioActual > _version.Ejercicio && mesActual <= 9) //{ // model.Ejercicio = anioActual; // model.Consecutivo = 1; // model.VersionId = 0; // model.Observaciones = string.Empty; //} model.ProductoID = "NA"; int tp = Convert.ToInt32(enumTipoDePresupuesto.FERTILIZANTES); int maxConsecutivo = 0; using (FTPresupuestoEntities _db = new FTPresupuestoEntities()) { maxConsecutivo = _db.VersionPresupuesto .Where(v => v.TipoPresupuesto == tp && v.Ejercicio == model.Ejercicio) .Select(v => v.Consecutivo) .DefaultIfEmpty(0) .Max(); } model.Consecutivo = maxConsecutivo + 1; return(View(model)); }