public async Task Add(AppDetailQuotes entity)
        {
            var cotizacion = await GetByQuetesProduct(entity.Cotizacion, entity.IdProducto);

            if (cotizacion == null)
            {
                await _context.AppDetailQuotes.AddAsync(entity);
            }
        }
        public async Task <AppDetailQuotes> CreateDetaiQuotes(AppDetailQuotesConversionUnitCreateDto dto)
        {
            var generalQuotes = await _unitOfWork.AppGeneralQuotesRepository.GetById(dto.AppGeneralQuotesId);

            if (generalQuotes != null)
            {
                AppDetailQuotes newDetail = new AppDetailQuotes();
                newDetail.AppGeneralQuotesId = dto.AppGeneralQuotesId;
                newDetail.Cotizacion         = generalQuotes.Cotizacion;
                newDetail.DiasEntrega        = 1;
                newDetail.IdProducto         = dto.AppProductId;
                var producto = await _unitOfWork.AppProductsRepository.GetById(dto.AppProductId);

                newDetail.NombreComercialProducto = producto.Description1;
                newDetail.Cantidad      = 1;
                newDetail.DiasEntrega   = 1;
                newDetail.IdEstatus     = generalQuotes.IdEstatus;
                newDetail.IdUnidad      = dto.AppUnitIdSince;
                newDetail.PrecioUsd     = 0;
                newDetail.Precio        = 0;
                newDetail.Total         = 0;
                newDetail.TotalUsd      = 0;
                newDetail.FechaRegistro = DateTime.Now;
                newDetail.CreatedAt     = DateTime.Now;
                newDetail.UpdatedAt     = DateTime.Now;
                newDetail.Observaciones = "";
                newDetail.UserCreate    = "";
                await _unitOfWork.AppDetailQuotesRepository.Add(newDetail);

                await _unitOfWork.SaveChangesAsync();

                return(await _unitOfWork.AppDetailQuotesRepository.GetById(newDetail.Id));
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 3
0
        public async Task <ApiResponse <AppGeneralQuotesGetDto> > EnviarAlCliente(AppGeneralQuotesChangeStatusDto dto)
        {
            AppGeneralQuotesGetDto resultDto = new AppGeneralQuotesGetDto();

            Metadata metadata = new Metadata
            {
                IsValid = true,
                Message = ""
            };

            ApiResponse <AppGeneralQuotesGetDto> response = new ApiResponse <AppGeneralQuotesGetDto>(resultDto);

            try
            {
                AppGeneralQuotes appGeneralQuotes = await GetById(dto.Id);

                if (appGeneralQuotes == null)
                {
                    metadata.IsValid = false;
                    metadata.Message = "Cotizacion No Existe!!! ";
                    response.Meta    = metadata;
                    response.Data    = resultDto;
                    return(response);
                }

                if (appGeneralQuotes.IdEstatus != 1)
                {
                    metadata.IsValid = false;
                    metadata.Message = "Cotizacion No esta en grabacion!!! ";
                    response.Meta    = metadata;
                    response.Data    = resultDto;
                    return(response);
                }



                ApiResponse <List <AppDetailQuotesGetDto> > appDatailQuotes = await _appDetailQuotesService.GetListAppDetailQuoteByAppGeneralQuotesId(dto.Id);

                if (appDatailQuotes.Data.Count > 0)
                {
                    foreach (AppDetailQuotesGetDto item in appDatailQuotes.Data)
                    {
                        AppDetailQuotes detailQuotes = await _appDetailQuotesService.GetById(item.Id);

                        if (detailQuotes != null)
                        {
                            if (detailQuotes.PrecioUsd < detailQuotes.UnitPriceConverted)
                            {
                                metadata.IsValid = false;
                                metadata.Message = "Precio de Venta es menor a la Lista..Enviar a Aprobacion!!! ";
                                response.Meta    = metadata;
                                response.Data    = resultDto;
                                return(response);
                            }

                            detailQuotes.IdEstatus = 2;
                            await _appDetailQuotesService.Update(detailQuotes);
                        }
                    }

                    appGeneralQuotes.IdEstatus = 2;

                    AppGeneralQuotes AppGeneralQuotesUpdated = await Update(appGeneralQuotes);


                    await _cotizacionService.IntegrarCotizacion(appGeneralQuotes.Id);

                    AppGeneralQuotesQueryFilter filters = new AppGeneralQuotesQueryFilter
                    {
                        Cotizacion = appGeneralQuotes.Cotizacion
                    };

                    resultDto = await GetAppGeneralQuotes(filters);

                    metadata.IsValid = true;
                    metadata.Message = "Cotizacion Enviada al cliente!!! ";
                    response.Meta    = metadata;
                    response.Data    = resultDto;

                    return(response);
                }
                else
                {
                    metadata.IsValid = false;
                    metadata.Message = "Cotizacion No tiene Productos cargados!!! ";
                    response.Meta    = metadata;
                    response.Data    = resultDto;
                    return(response);
                }
            }
            catch (Exception ex)
            {
                metadata.IsValid = false;

                metadata.Message = ex.InnerException.Message;

                response.Meta = metadata;
                response.Data = resultDto;

                return(response);
            }
        }
        public async Task Delete(int id)
        {
            AppDetailQuotes entity = await GetById(id);

            _context.AppDetailQuotes.Remove(entity);
        }
 public void Update(AppDetailQuotes entity)
 {
     _context.AppDetailQuotes.Update(entity);
 }
        public async Task <ApiResponse <List <AppDetailQuotesConversionUnit> > > CreateAppDetailQuotesConversionUnit(AppDetailQuotesConversionUnitCreateDto appDetailQuotesConversionUnitCreateDto)
        {
            Metadata metadata = new Metadata
            {
                IsValid = true,
                Message = ""
            };

            List <AppDetailQuotesConversionUnit> resultDto = new List <AppDetailQuotesConversionUnit>();
            ApiResponse <List <AppDetailQuotesConversionUnit> > response = new ApiResponse <List <AppDetailQuotesConversionUnit> >(resultDto);

            try
            {
                AppDetailQuotes newDetail = new AppDetailQuotes();
                if (appDetailQuotesConversionUnitCreateDto.AppDetailQuotesId == 0)
                {
                    newDetail = await CreateDetaiQuotes(appDetailQuotesConversionUnitCreateDto);

                    if (newDetail != null)
                    {
                        appDetailQuotesConversionUnitCreateDto.AppDetailQuotesId = newDetail.Id;
                    }
                }


                await DeteleAppDetailQuotesByDetailQuotesId(appDetailQuotesConversionUnitCreateDto.AppDetailQuotesId);

                List <AppTemplateConversionUnit> template = await _unitOfWork.AppTemplateConversionUnitRepository.GetTemplateByUnits(appDetailQuotesConversionUnitCreateDto.AppUnitIdSince, appDetailQuotesConversionUnitCreateDto.AppUnitIdUntil);

                var listDetailQuotesConversion = await CreateListFromTemplate(template, (int)appDetailQuotesConversionUnitCreateDto.AppDetailQuotesId);

                foreach (var item in listDetailQuotesConversion)
                {
                    var variable = appDetailQuotesConversionUnitCreateDto.AppTemplateConversionUnitGetDto.Where(x => x.AppVariableId == item.AppVariableId).FirstOrDefault();
                    if (variable != null && item.Formula == "")
                    {
                        item.Value = variable.Value;
                    }
                    await Insert(item);
                }


                await CalculateAppDetailQuotesByDetailQuotesId(appDetailQuotesConversionUnitCreateDto.AppDetailQuotesId);

                var totalValue = _unitOfWork.AppDetailQuotesConversionUnitRepository.TotalValue(appDetailQuotesConversionUnitCreateDto.AppDetailQuotesId);
                var cantidadPorUnidadProduccion = _unitOfWork.AppDetailQuotesConversionUnitRepository.GetCantidadPorUnidadProduccion(appDetailQuotesConversionUnitCreateDto.AppDetailQuotesId);
                var detailQuote = await _unitOfWork.AppDetailQuotesRepository.GetById(appDetailQuotesConversionUnitCreateDto.AppDetailQuotesId);

                if (detailQuote != null)
                {
                    detailQuote.ValorConvertido             = totalValue;
                    detailQuote.CantidadPorUnidadProduccion = cantidadPorUnidadProduccion;
                    detailQuote.UnitPriceBaseProduction     = detailQuote.IdProductoNavigation.UnitPrice;
                    if (detailQuote.UnitPriceBaseProduction > 0)
                    {
                        detailQuote.UnitPriceConverted = detailQuote.UnitPriceBaseProduction * detailQuote.ValorConvertido;
                    }
                    else
                    {
                        detailQuote.UnitPriceConverted = 0;
                    }
                    detailQuote.IdUnidad = appDetailQuotesConversionUnitCreateDto.AppUnitIdSince;
                    _unitOfWork.AppDetailQuotesRepository.Update(detailQuote);
                    await _unitOfWork.SaveChangesAsync();
                }

                resultDto = await _unitOfWork.AppDetailQuotesConversionUnitRepository.GetByAppDetailQuotesId(appDetailQuotesConversionUnitCreateDto.AppDetailQuotesId);

                response.Meta = metadata;
                response.Data = resultDto;


                return(response);
            }
            catch (Exception ex)
            {
                metadata.IsValid = false;
                metadata.Message = ex.InnerException.Message;
                response.Meta    = metadata;
                response.Data    = resultDto;


                return(response);
            }
        }
        public async Task <ApiResponse <Wsmy647> > ActivarWORKFLOW(string cotizacion, int renglon, int propuesta, string usuarioConectado, AppDetailQuotes appDetailQuotes)
        {
            Wsmy647 resultDto = new Wsmy647();

            Metadata metadata = new Metadata
            {
                IsValid = true,
                Message = ""
            };

            ApiResponse <Wsmy647> response = new ApiResponse <Wsmy647>(resultDto);

            try
            {
                // HdId.Value IdSoicitud wsmy515,



                // HdRuta.Value
                // HdRuta.Value = Wsmy649.BuscarRuta(HdSubCategoria.Value, HdIdOficina.Value)

                //HdIdNextEst.Value
                //Wsmy649.BuscarAprobador(HdRuta.Value, HdSubCategoria.Value, HdIdOficina.Value, PuntosPorcDebajo, PuntosPorcArriba)
                //IdEstacion

                var cotizacionObject = await _unitOfWork.CotizacionRepository.GetByCotizacion(cotizacion);

                var renglonObject = await _unitOfWork.RenglonRepository.GetByCotizacionRenglon(cotizacion, renglon);

                var propuestaObject = await _unitOfWork.PropuestaRepository.GetByCotizacionRenglonPropuesta(cotizacion, renglon, propuesta);

                var cliente = _unitOfWork.MtrClienteRepository.GetById(cotizacionObject.CodCliente);

                var producto = await _unitOfWork.Csmy036Repository.GetByCode(renglonObject.CodProducto);

                var ruta = await _unitOfWork.Wsmy649Repository.BuscarRuta((short)producto.Idsubcategoria, short.Parse(cliente.OficinaVenta));

                var idEstacion = await _unitOfWork.Wsmy649Repository.BuscarAprobador((short)producto.Idsubcategoria, short.Parse(cliente.OficinaVenta), ruta.IdRuta);

                var aprobacion = await GetByCotizacionRenglonPrpopuesta(cotizacion, renglon, propuesta);

                //Flujo Aprobación CYPJ = 1
                var IdTipoFlujo = 1;


                var wsmy647 = await _unitOfWork.Wsmy647Repository.Get(aprobacion.Id, ruta.IdRuta, idEstacion);

                if (wsmy647 == null)
                {
                    //AGREGAMOS LAS OBSERVACIONES
                    Wsmy655 wsmy655New = new Wsmy655();

                    wsmy655New.IdCalculo = aprobacion.Id;

                    wsmy655New.IdEstacion = short.Parse(idEstacion.ToString());

                    wsmy655New.IdUsuario = usuarioConectado;

                    wsmy655New.Observaciones = appDetailQuotes.ObsSolicitud;

                    wsmy655New.Fecha = DateTime.Now;

                    await _unitOfWork.Wsmy655Repository.Add(wsmy655New);

                    await _unitOfWork.SaveChangesAsync();



                    Wsmy647 wsmy647New = new Wsmy647();

                    wsmy647New.IdCalculo = aprobacion.Id;

                    wsmy647New.IdRuta = ruta.IdRuta;

                    wsmy647New.IdEstacion = short.Parse(idEstacion.ToString());

                    wsmy647New.IdUsuario = usuarioConectado;

                    var wsmy645 = await _unitOfWork.Wsmy645Repository.EstatusPendiente();

                    wsmy647New.IdEstatus = wsmy645.IdEstatus;

                    wsmy647New.FechaEntrada = DateTime.Now;

                    await _unitOfWork.Wsmy647Repository.Add(wsmy647New);

                    await _unitOfWork.SaveChangesAsync();


                    //ACTUALIZAMOS SOLICITUD

                    var solicitud = await _unitOfWork.AprobacionesRepository.GetByCotizacionRenglonPropuesta(cotizacion, renglon, propuesta);

                    solicitud.FlagEnviado = true;
                    _unitOfWork.AprobacionesRepository.Update(solicitud);
                    await _unitOfWork.SaveChangesAsync();



                    metadata.IsValid = true;
                    metadata.Message = "Solicitud enviada con éxito!!";
                    response.Data    = null;
                    response.Meta    = metadata;

                    return(response);
                }
                else
                {
                    wsmy647.IdCalculo = aprobacion.Id;

                    //AGREGAMOS LAS OBSERVACIONES
                    Wsmy655 wsmy655New = new Wsmy655();

                    wsmy655New.IdCalculo = aprobacion.Id;

                    wsmy655New.IdEstacion = short.Parse(idEstacion.ToString());

                    wsmy655New.IdUsuario = usuarioConectado;

                    wsmy655New.Observaciones = appDetailQuotes.ObsSolicitud;

                    wsmy655New.Fecha = DateTime.Now;

                    await _unitOfWork.Wsmy655Repository.Add(wsmy655New);

                    await _unitOfWork.SaveChangesAsync();



                    metadata.IsValid = true;
                    metadata.Message = "Solicitud enviada con éxito!!";
                    response.Data    = null;
                    response.Meta    = metadata;

                    return(response);
                }
            }
            catch (Exception ex)
            {
                metadata.IsValid = false;
                metadata.Message = ex.InnerException.Message;
                response.Data    = null;
                response.Meta    = metadata;
                return(response);
            }
        }