Пример #1
0
 /// <summary>
 ///  Método que obtiene un registro
 /// </summary>
 /// <param name="ds"></param>
 /// <returns></returns>
 public static CamionRepartoInfo ObtenerPorID(DataSet ds)
 {
     try
     {
         Logger.Info();
         DataTable         dt      = ds.Tables[ConstantesDAL.DtDatos];
         CamionRepartoInfo entidad =
             (from info in dt.AsEnumerable()
              select
              new CamionRepartoInfo
         {
             CamionRepartoID = info.Field <int>("CamionRepartoID"),
             Organizacion = new OrganizacionInfo {
                 OrganizacionID = info.Field <int>("OrganizacionID"), Descripcion = info.Field <string>("Organizacion")
             },
             CentroCosto = new CentroCostoInfo {
                 CentroCostoID = info.Field <int>("CentroCostoID"), Descripcion = info.Field <string>("CentroCosto")
             },
             NumeroEconomico = info.Field <string>("NumeroEconomico"),
             Activo = info.Field <bool>("Activo").BoolAEnum(),
         }).First();
         return(entidad);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Пример #2
0
 /// <summary>
 /// Metodo para Crear un registro de CamionReparto
 /// </summary>
 /// <param name="info">Valores de la entidad que será creada</param>
 public int Crear(CamionRepartoInfo info)
 {
     try
     {
         Logger.Info();
         Dictionary <string, object> parameters = AuxCamionRepartoDAL.ObtenerParametrosCrear(info);
         int result = Create("CamionReparto_Crear", parameters);
         return(result);
     }
     catch (SqlException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (DataException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Пример #3
0
 /// <summary>
 /// Inicializa el Contexto
 /// </summary>
 private void InicializaContexto()
 {
     Contexto = new CamionRepartoInfo
     {
         UsuarioCreacionID = AuxConfiguracion.ObtenerUsuarioLogueado(),
         Organizacion      = new OrganizacionInfo
         {
             TipoOrganizacion = new TipoOrganizacionInfo
             {
                 TipoProceso = new TipoProcesoInfo()
             },
             Iva = new IvaInfo
             {
                 CuentaPagar = new CuentaInfo
                 {
                     TipoCuenta = new TipoCuentaInfo()
                 },
                 CuentaRecuperar = new CuentaInfo
                 {
                     TipoCuenta = new TipoCuentaInfo()
                 }
             }
         }
     };
 }
Пример #4
0
 /// <summary>
 /// Metodo para Guardar/Modificar una entidad CamionReparto
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 public int Guardar(CamionRepartoInfo info)
 {
     try
     {
         Logger.Info();
         var id = 0;
         if (info.CamionRepartoID > 0)
         {
             id = da.Actualizar <CamionRepartoInfo>(info);
             camionRepartoAccessor.ActualizaFechaModificacion(info.CamionRepartoID);
         }
         else
         {
             id = da.Insertar <CamionRepartoInfo>(info);
         }
         return(id);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Пример #5
0
 /// <summary>
 /// Obtiene un registro de CamionReparto
 /// </summary>
 /// <param name="descripcion">Descripción de la CamionReparto</param>
 /// <returns></returns>
 public CamionRepartoInfo ObtenerPorDescripcion(string descripcion)
 {
     try
     {
         Logger.Info();
         Dictionary <string, object> parameters = AuxCamionRepartoDAL.ObtenerParametrosPorDescripcion(descripcion);
         DataSet           ds     = Retrieve("CamionReparto_ObtenerPorDescripcion", parameters);
         CamionRepartoInfo result = null;
         if (ValidateDataSet(ds))
         {
             result = MapCamionRepartoDAL.ObtenerPorDescripcion(ds);
         }
         return(result);
     }
     catch (SqlException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (DataException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
 /// <summary>
 /// Inicializa el Contexto
 /// </summary>
 private void InicializaContexto()
 {
     Contexto = new CamionRepartoInfo
     {
         UsuarioCreacionID = AuxConfiguracion.ObtenerUsuarioLogueado(),
         Organizacion      = new OrganizacionInfo(),
         CentroCosto       = new CentroCostoInfo()
     };
     skAyudaOrganizacion.AsignarFoco();
 }
        /// <summary>
        /// Metodo que valida los datos para guardar
        /// </summary>
        /// <returns></returns>
        private bool ValidaGuardar()
        {
            bool   resultado = true;
            string mensaje   = string.Empty;

            try
            {
                if (Contexto.Organizacion == null || Contexto.Organizacion.OrganizacionID == 0)
                {
                    resultado = false;
                    mensaje   = Properties.Resources.CamionRepartoEdicion_MsgOrganizacionIDRequerida;
                    skAyudaOrganizacion.AsignarFoco();
                }
                else if (string.IsNullOrWhiteSpace(Contexto.NumeroEconomico))
                {
                    resultado = false;
                    mensaje   = Properties.Resources.CamionRepartoEdicion_MsgNumeroEconomicoRequerida;
                    txtNumeroEconomico.Focus();
                }
                else if (cmbActivo.SelectedItem == null)
                {
                    resultado = false;
                    mensaje   = Properties.Resources.CamionRepartoEdicion_MsgActivoRequerida;
                    cmbActivo.Focus();
                }
                else
                {
                    int    camionRepartoId = Contexto.CamionRepartoID;
                    string descripcion     = Contexto.NumeroEconomico;
                    int    organizacionID  = Contexto.Organizacion.OrganizacionID;

                    using (var camionRepartoBL = new CamionRepartoBL())
                    {
                        CamionRepartoInfo camionReparto = camionRepartoBL.ObtenerPorDescripcion(descripcion, organizacionID);

                        if (camionReparto != null && (camionRepartoId == 0 || camionRepartoId != camionReparto.CamionRepartoID))
                        {
                            resultado = false;
                            mensaje   = string.Format(Properties.Resources.CamionRepartoEdicion_MsgDescripcionExistente, camionReparto.CamionRepartoID);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }

            if (!string.IsNullOrWhiteSpace(mensaje))
            {
                SkMessageBox.Show(this, mensaje, MessageBoxButton.OK, MessageImage.Warning);
            }
            return(resultado);
        }
 /// <summary>
 /// Evento que se ejecuta mientras se esta cerrando la ventana
 /// </summary>
 /// <param name="e"></param>
 protected override void OnClosing(CancelEventArgs e)
 {
     if (confirmaSalir)
     {
         MessageBoxResult result = SkMessageBox.Show(this, Properties.Resources.Msg_CerrarSinGuardar, MessageBoxButton.YesNo,
                                                     MessageImage.Question);
         if (result == MessageBoxResult.Yes)
         {
             Contexto = null;
         }
         else
         {
             e.Cancel = true;
         }
     }
 }
Пример #9
0
 /// <summary>
 /// Metodo para Guardar/Modificar una entidad CamionReparto
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 public int Guardar(CamionRepartoInfo info)
 {
     try
     {
         Logger.Info();
         return(camionRepartoDAL.Guardar(info));
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Пример #10
0
 /// <summary>
 /// Obtiene una entidad de CamionReparto por su Id
 /// </summary>
 /// <param name="camionReparto">Obtiene una entidad CamionReparto por su Id</param>
 /// <returns></returns>
 public CamionRepartoInfo ObtenerPorID(CamionRepartoInfo camionReparto)
 {
     try
     {
         Logger.Info();
         return(camionRepartoDAL.ObtenerTodos().Where(e => e.CamionRepartoID == camionReparto.CamionRepartoID).FirstOrDefault());
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Пример #11
0
 public static CamionRepartoInfo ObtenerPorNumeroEconomico(string numeroEconomico)
 {
     try
     {
         using (var camionRepartoBL = new CamionRepartoBL())
         {
             var seguridad = (SeguridadInfo)ObtenerSeguridad();
             CamionRepartoInfo camionReparto = camionRepartoBL.ObtenerPorNumeroEconomico(numeroEconomico,
                                                                                         seguridad.Usuario.Organizacion.OrganizacionID);
             return(camionReparto);
         }
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw;
     }
 }
Пример #12
0
 public CamionRepartoInfo ObtenerCamionRepartoPorID(CamionRepartoInfo camionReparto)
 {
     try
     {
         Logger.Info();
         return(da.Tabla <CamionRepartoInfo>().FirstOrDefault(camion => camion.OrganizacionID == camionReparto.Organizacion.OrganizacionID &&
                                                              camion.Activo == EstatusEnum.Activo && camion.CamionRepartoID == camionReparto.CamionRepartoID));
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Пример #13
0
        internal CamionRepartoInfo ObtenerCamionRepartoPorID(CamionRepartoInfo camionReparto)
        {
            CamionRepartoInfo info;

            try
            {
                Logger.Info();
                var camionRepartoDAL = new CamionRepartoDAL();
                info = camionRepartoDAL.ObtenerCamionRepartoPorID(camionReparto);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(info);
        }
Пример #14
0
 /// <summary>
 /// Obtiene parametros para crear
 /// </summary>
 /// <param name="info">Valores de la entidad</param>
 /// <returns></returns>
 public static Dictionary <string, object> ObtenerParametrosCrear(CamionRepartoInfo info)
 {
     try
     {
         Logger.Info();
         var parametros =
             new Dictionary <string, object>
         {
             { "@OrganizacionID", info.Organizacion.OrganizacionID },
             { "@CentroCostoID", info.CentroCosto.CentroCostoID },
             { "@NumeroEconomico", info.NumeroEconomico },
             { "@Activo", info.Activo },
             { "@UsuarioCreacionID", info.UsuarioCreacionID },
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Пример #15
0
        /// <summary>
        ///      Obtiene camion reparto por su Id
        /// </summary>
        /// <returns> </returns>
        public CamionRepartoInfo ObtenerCamionRepartoPorID(CamionRepartoInfo camionReparto)
        {
            CamionRepartoInfo info;

            // var  organizacionID = AuxConfiguracion.ObtenerOrganizacionUsuario();
            try
            {
                Logger.Info();
                var camionRepartoBL = new CamionRepartoBL();
                info = camionRepartoBL.ObtenerCamionRepartoPorID(camionReparto);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(info);
        }
Пример #16
0
 /// <summary>
 /// Metodo para actualizar un registro de CamionReparto
 /// </summary>
 /// <param name="info">Valores de la entidad que se actualizarán</param>
 public void Actualizar(CamionRepartoInfo info)
 {
     try
     {
         Logger.Info();
         Dictionary <string, object> parameters = AuxCamionRepartoDAL.ObtenerParametrosActualizar(info);
         Update("CamionReparto_Actualizar", parameters);
     }
     catch (SqlException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (DataException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Пример #17
0
 public static Dictionary <string, object> ObtenerParametroPorID(CamionRepartoInfo camionReparto)
 {
     throw new NotImplementedException();
 }
Пример #18
0
 /// <summary>
 /// Obtiene parametros para obtener lista paginada
 /// </summary>
 /// <param name="pagina"></param>
 /// <param name="filtro"></param>
 /// <returns></returns>
 public static Dictionary <string, object> ObtenerParametrosPorPagina(PaginacionInfo pagina, CamionRepartoInfo filtro)
 {
     try
     {
         Logger.Info();
         var parametros =
             new Dictionary <string, object>
         {
             { "@CamionRepartoID", filtro.CamionRepartoID },
             { "@Activo", filtro.Activo },
             { "@Inicio", pagina.Inicio },
             { "@Limite", pagina.Limite }
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
        /// <summary>
        /// Carga el archivo data link en la orden de reparto
        /// </summary>
        /// <param name="validacionDatalink"></param>
        /// <param name="usuario"></param>
        /// <returns></returns>
        internal ResultadoOperacion CargarArchivoDatalink(ValidacionDataLink validacionDatalink, UsuarioInfo usuario)
        {
            var validar   = new DataLinkInfo();
            var resultado = new ResultadoOperacion {
                Resultado = true
            };

            try
            {
                Logger.Info();
                var corralBl  = new CorralBL();
                var loteBl    = new LoteBL();
                var repartoBl = new RepartoBL();
                using (var camionRepartoBl = new CamionRepartoBL())
                {
                    var servicioAlimentoBL           = new ServicioAlimentoBL();
                    var datalinks                    = new List <DataLinkInfo>();
                    var repartosServicioAlimentacion = new List <RepartoInfo>();
                    var repartosDetalles             = new List <RepartoDetalleInfo>();
                    var corralesEliminar             = new List <CorralInfo>();

                    var formulaBL = new FormulaBL();
                    IList <FormulaInfo> formulasExistentes = formulaBL.ObtenerTodos(EstatusEnum.Activo);

                    IList <CamionRepartoInfo> camionesRepartoOrganizacion =
                        camionRepartoBl.ObtenerPorOrganizacionID(usuario.Organizacion.OrganizacionID);

                    foreach (var dataLink in validacionDatalink.ListaDataLink)
                    {
                        validar = dataLink;

                        //CamionRepartoInfo camionRepartoInfo = camionRepartoBl.ObtenerPorNumeroEconomico(dataLink.NumeroCamion.Trim(), usuario.Organizacion.OrganizacionID);
                        CamionRepartoInfo camionRepartoInfo =
                            camionesRepartoOrganizacion.FirstOrDefault(
                                cam =>
                                cam.NumeroEconomico.Equals(dataLink.NumeroCamion.Trim(),
                                                           StringComparison.CurrentCultureIgnoreCase));
                        dataLink.CamionReparto = camionRepartoInfo;
                        CorralInfo corral = corralBl.ObtenerPorCodicoOrganizacionCorral(new CorralInfo
                        {
                            Codigo       = dataLink.CodigoCorral,
                            Organizacion = new OrganizacionInfo {
                                OrganizacionID = usuario.Organizacion.OrganizacionID
                            },
                            Activo = EstatusEnum.Activo,
                        });
                        if (corral != null)
                        {
                            var lote = loteBl.ObtenerPorCorralCerrado(usuario.Organizacion.OrganizacionID, corral.CorralID);
                            if (lote == null)
                            {
                                lote = new LoteInfo();
                            }
                            //if (lote != null)
                            //{

                            var fecha   = ObtenerFecha(dataLink.CadenaFechaReparto);
                            var reparto = repartoBl.ObtenerRepartoPorFechaCorralServicio(fecha, corral, dataLink.TipoServicio);
                            if (reparto != null)
                            {
                                //var formulaBl = new FormulaBL();
                                //int formulaId;
                                //int.TryParse(dataLink.ClaveFormula, out formulaId);
                                var formula = formulasExistentes.FirstOrDefault(fo => fo.Descripcion.Equals(dataLink.ClaveFormula.Trim(), StringComparison.CurrentCultureIgnoreCase));
                                if (formula != null)
                                {
                                    dataLink.FormulaServida = formula;
                                    dataLink.Reparto        = reparto;
                                    dataLink.UsuarioID      = usuario.UsuarioID;
                                    dataLink.OrganizacionID = usuario.Organizacion.OrganizacionID;
                                    datalinks.Add(dataLink);
                                }
                            }
                            //Si el Lote no se encuentra en el Reparto, buscarlo en la tabla ServicioAlimento
                            else
                            {
                                ServicioAlimentoInfo servicioAlimentoInfo =
                                    servicioAlimentoBL.ObtenerPorCorralID(usuario.Organizacion.OrganizacionID,
                                                                          corral.CorralID);

                                if (servicioAlimentoInfo != null)
                                {
                                    LoteDescargaDataLinkModel datosLote =
                                        loteBl.ObtenerLoteDataLink(usuario.Organizacion.OrganizacionID, lote.LoteID);

                                    if (datosLote == null)
                                    {
                                        datosLote = new LoteDescargaDataLinkModel
                                        {
                                            PesoInicio  = 0,
                                            FechaInicio = fecha,
                                            Cabezas     = 0,
                                        };
                                    }


                                    //var formulaBl = new FormulaBL();
                                    //int formulaId;
                                    //int.TryParse(dataLink.ClaveFormula, out formulaId);
                                    //var formula = formulaBl.ObtenerPorID(formulaId);
                                    var formula = formulasExistentes.FirstOrDefault(fo => fo.Descripcion.Equals(dataLink.ClaveFormula.Trim(), StringComparison.CurrentCultureIgnoreCase));
                                    if (formula != null)
                                    {
                                        var repartoNuevo = new RepartoInfo
                                        {
                                            OrganizacionID    = usuario.Organizacion.OrganizacionID,
                                            LoteID            = lote.LoteID,
                                            Corral            = corral,
                                            Fecha             = fecha,
                                            PesoInicio        = datosLote.PesoInicio,
                                            PesoProyectado    = 0,
                                            DiasEngorda       = Convert.ToInt32((fecha - datosLote.FechaInicio).TotalDays),
                                            PesoRepeso        = 0,
                                            DetalleReparto    = new List <RepartoDetalleInfo>(),
                                            UsuarioCreacionID = usuario.UsuarioID,
                                            Activo            = EstatusEnum.Activo
                                        };

                                        var detalleReparto = new RepartoDetalleInfo
                                        {
                                            TipoServicioID      = dataLink.TipoServicio,
                                            FormulaIDProgramada = servicioAlimentoInfo.FormulaID,
                                            FormulaIDServida    = formula.FormulaId,
                                            CantidadProgramada  = servicioAlimentoInfo.KilosProgramados,
                                            CantidadServida     = dataLink.KilosServidos,
                                            HoraReparto         = dataLink.Hora,
                                            CostoPromedio       = 0,
                                            Importe             = 0,
                                            Servido             = true,
                                            Cabezas             = datosLote.Cabezas == 0 ? 1 : datosLote.Cabezas,
                                            EstadoComederoID    = EstadoComederoEnum.Normal.GetHashCode(),
                                            CamionRepartoID     = dataLink.CamionReparto.CamionRepartoID,
                                            UsuarioCreacionID   = usuario.UsuarioID,
                                            Activo = EstatusEnum.Activo
                                        };
                                        repartoNuevo.DetalleReparto.Add(detalleReparto);

                                        repartosServicioAlimentacion.Add(repartoNuevo);

                                        var corralEliminar = new CorralInfo
                                        {
                                            CorralID = corral.CorralID,
                                            UsuarioModificacionID = usuario.UsuarioID
                                        };
                                        corralesEliminar.Add(corralEliminar);
                                    }
                                }
                            }
                            //}
                            //else
                            //{
                            //    var bitacoraBL = new BitacoraIncidenciasBL();
                            //    var errorInfo = new BitacoraErroresInfo
                            //        {
                            //            AccionesSiapID = AccionesSIAPEnum.DeDataLink,
                            //            Mensaje = "No es posible aplicar el consumo para el corral: " + corral.Codigo,
                            //            UsuarioCreacionID = usuario.UsuarioID
                            //        };

                            //    //DescargarArchivoDataLink
                            //    bitacoraBL.GuardarError(errorInfo);
                            //}
                        }
                    }
                    if (datalinks.Count > 0)
                    {
                        if (datalinks.Any(x => x.CamionReparto == null))
                        {
                            resultado.Resultado          = false;
                            resultado.DescripcionMensaje = ResourceServices.DescargaDataLink_msgCamionNoAsignado;
                        }
                        else
                        {
                            using (var transaccion = new TransactionScope())
                            {
                                if (repartosServicioAlimentacion.Any())
                                {
                                    foreach (var repartoInfo in repartosServicioAlimentacion)
                                    {
                                        int repartoID = repartoBl.Guardar(repartoInfo);
                                        repartoInfo.DetalleReparto.ToList().ForEach(rep => rep.RepartoID = repartoID);
                                        repartosDetalles.AddRange(repartoInfo.DetalleReparto);
                                    }
                                    repartoBl.GuardarRepartoDetalle(repartosDetalles);
                                    if (corralesEliminar.Any())
                                    {
                                        servicioAlimentoBL.EliminarXML(corralesEliminar);
                                    }
                                }

                                var res = repartoBl.CargarArchivoDatalink(datalinks);
                                resultado.RegistrosAfectados = res;
                                resultado.DescripcionMensaje = ResourceServices.DescargarDataLink_GuradadoOk;
                                transaccion.Complete();
                            }

                            RenombrarArchivos(validacionDatalink);
                        }
                    }
                    else
                    {
                        resultado.Resultado          = false;
                        resultado.DescripcionMensaje = ResourceServices.DescargarDataLink_NoSecargo;
                    }
                }
            }
            catch (ExcepcionGenerica)
            {
                if (validar != null)
                {
                }
                resultado.Resultado = false;
                throw;
            }
            catch (Exception ex)
            {
                if (validar != null)
                {
                }
                resultado.Resultado = false;
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(resultado);
        }
 /// <summary>
 /// Constructor para editar una entidad CamionReparto Existente
 /// </summary>
 /// <param name="camionRepartoInfo"></param>
 public CamionRepartoEdicion(CamionRepartoInfo camionRepartoInfo)
 {
     InitializeComponent();
     camionRepartoInfo.UsuarioModificacionID = AuxConfiguracion.ObtenerUsuarioLogueado();
     Contexto = camionRepartoInfo;
 }
Пример #21
0
        private IList <PolizaInfo> ObtenerPoliza(SolicitudProductoInfo solicitud)
        {
            var polizasSalidaConsumo = new List <PolizaInfo>();

            IList <ClaseCostoProductoInfo> cuentasAlmacenProductoSalida =
                ObtenerCostosProducto(solicitud.AlmacenGeneralID);

            if (cuentasAlmacenProductoSalida == null)
            {
                throw new ExcepcionServicio("No se encuentran cuentas configuradas, para productos del almacén general");
            }
            IList <CuentaSAPInfo> cuentasSap = ObtenerCuentasSAP();

            TipoPolizaInfo tipoPoliza =
                TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.SalidaConsumo.GetHashCode());

            string textoDocumento = tipoPoliza.TextoDocumento;
            string tipoMovimiento = tipoPoliza.ClavePoliza;
            string postFijoRef3   = tipoPoliza.PostFijoRef3;

            var linea = 1;
            //TO DO REVISAR SI CAMBIARA EL REF 3
            var ref3 = new StringBuilder();

            ref3.Append("03");
            ref3.Append(
                string.Format("{0}{1}{2}", DateTime.Today.Day, DateTime.Today.Month, DateTime.Today.Year).PadLeft(
                    10, ' '));
            ref3.Append(new Random(10).Next(10, 20));
            ref3.Append(new Random(30).Next(30, 40));
            ref3.Append(DateTime.Now.Millisecond);
            ref3.Append(postFijoRef3);

            string numeroReferencia = ObtenerNumeroReferencia;

            DateTime fecha        = solicitud.FechaEntrega.HasValue ? solicitud.FechaEntrega.Value : DateTime.MinValue;
            string   archivoFolio = ObtenerArchivoFolio(fecha);

            var organizacionBL            = new OrganizacionBL();
            OrganizacionInfo organizacion = organizacionBL.ObtenerPorAlmacenID(solicitud.AlmacenGeneralID);

            if (organizacion == null)
            {
                organizacion = new OrganizacionInfo
                {
                    TipoOrganizacion = new TipoOrganizacionInfo()
                };
            }
            string claveParametro;
            var    centrosCosto    = ObtenerCentrosCosto();
            var    camionesReparto = ObtenerCamionesRepartoPorOrganizacion(organizacion.OrganizacionID); //camionRepartoBL.ObtenerPorOrganizacionID(organizacion.OrganizacionID);

            var  primerDetalle = solicitud.Detalle.FirstOrDefault();
            bool esCamionReparto;

            if (primerDetalle != null && primerDetalle.CamionRepartoID.HasValue && primerDetalle.CamionRepartoID.Value > 0)
            {
                claveParametro  = ParametrosEnum.CuentaCostosDiesel.ToString();
                esCamionReparto = true;
            }
            else
            {
                claveParametro  = ParametrosEnum.CuentaCostosProductosAlmacen.ToString();
                esCamionReparto = false;
            }
            ParametroOrganizacionInfo parametroCuenta = ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID,
                                                                                             claveParametro);

            if (parametroCuenta == null)
            {
                throw new ExcepcionServicio(string.Format("No se encuentró valor de la cuenta, para el parámetro {0}, en la organización", claveParametro));
            }

            foreach (var solicitudDetalle in solicitud.Detalle)
            {
                int centroCostoID;
                if (esCamionReparto)
                {
                    CamionRepartoInfo camionReparto =
                        camionesReparto.FirstOrDefault(
                            camion => camion.CamionRepartoID == solicitudDetalle.CamionRepartoID);
                    if (camionReparto == null)
                    {
                        camionReparto = new CamionRepartoInfo();
                    }
                    centroCostoID = camionReparto.CentroCosto.CentroCostoID;
                }
                else
                {
                    centroCostoID = solicitud.CentroCostoID;
                }

                CentroCostoInfo centroCostoCargo =
                    centrosCosto.FirstOrDefault(centro => centro.CentroCostoID == centroCostoID);

                if (centroCostoCargo == null)
                {
                    throw new ExcepcionServicio("No se encuentró el centro de costo");
                }

                var datos = new DatosPolizaInfo
                {
                    NumeroReferencia  = numeroReferencia,
                    FechaEntrada      = solicitud.FechaEntrega.HasValue ? solicitud.FechaEntrega.Value : DateTime.MinValue,
                    Folio             = solicitud.FolioSolicitud.ToString(CultureInfo.InvariantCulture),
                    CabezasRecibidas  = string.Empty,
                    NumeroDocumento   = string.Empty,
                    ClaseDocumento    = postFijoRef3,
                    ClaveProveedor    = string.Empty,
                    Importe           = string.Format("{0}", Math.Round(solicitudDetalle.Cantidad * solicitudDetalle.PrecioPromedio, 2).ToString("F2")),
                    IndicadorImpuesto = String.Empty,
                    CentroCosto       = string.Format("{0}{1}{2}",
                                                      "SA0",
                                                      organizacion.OrganizacionID,
                                                      centroCostoCargo.CentroCostoSAP),
                    Renglon          = Convert.ToString(linea++),
                    Cabezas          = string.Empty,
                    ImporteIva       = "0",
                    Ref3             = ref3.ToString(),
                    Cuenta           = parametroCuenta.Valor,
                    CodigoRetencion  = string.Empty,
                    Division         = organizacion.Division,
                    TipoRetencion    = string.Empty,
                    ArchivoFolio     = archivoFolio,
                    DescripcionCosto = string.Empty,
                    PesoOrigen       = 0,
                    TipoDocumento    = textoDocumento,
                    ComplementoRef1  = string.Empty,
                    Concepto         = String.Format("{0}-{1} {2} {3} {4}",
                                                     tipoMovimiento,
                                                     solicitud.FolioSolicitud,
                                                     solicitudDetalle.Cantidad.ToString("N2"),
                                                     solicitudDetalle.Producto.Descripcion,
                                                     (Math.Round(solicitudDetalle.Cantidad * solicitudDetalle.PrecioPromedio, 2).ToString("C2"))),
                    Sociedad            = organizacion.Sociedad,
                    DescripcionProducto = solicitudDetalle.Producto.Descripcion,
                    Segmento            = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                };
                PolizaInfo polizaSalida = GeneraRegistroPoliza(datos);
                polizasSalidaConsumo.Add(polizaSalida);

                var cuentaSapSale = cuentasAlmacenProductoSalida.FirstOrDefault(
                    cuenta => cuenta.ProductoID == solicitudDetalle.Producto.ProductoId);

                if (cuentaSapSale == null)
                {
                    cuentaSapSale = new ClaseCostoProductoInfo();
                }
                var claveContableAbono = cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapSale.CuentaSAPID);

                if (claveContableAbono == null)
                {
                    throw new ExcepcionServicio(string.Format("No se encontró configurada la cuenta del producto {0}", solicitudDetalle.Producto.Descripcion));
                }

                datos = new DatosPolizaInfo
                {
                    NumeroReferencia  = numeroReferencia,
                    FechaEntrada      = solicitud.FechaEntrega.HasValue ? solicitud.FechaEntrega.Value : DateTime.MinValue,
                    Folio             = solicitud.FolioSolicitud.ToString(CultureInfo.InvariantCulture),
                    CabezasRecibidas  = string.Empty,
                    NumeroDocumento   = string.Empty,
                    ClaseDocumento    = postFijoRef3,
                    ClaveProveedor    = string.Empty,
                    Importe           = string.Format("{0}", (Math.Round(solicitudDetalle.Cantidad * solicitudDetalle.PrecioPromedio, 2) * -1).ToString("F2")),
                    IndicadorImpuesto = String.Empty,
                    CentroCosto       = string.Empty,
                    Renglon           = Convert.ToString(linea++),
                    Cabezas           = string.Empty,
                    ImporteIva        = "0",
                    Ref3             = ref3.ToString(),
                    Cuenta           = claveContableAbono.CuentaSAP,
                    CodigoRetencion  = string.Empty,
                    TipoRetencion    = string.Empty,
                    ArchivoFolio     = archivoFolio,
                    DescripcionCosto = string.Empty,
                    Division         = organizacion.Division,
                    PesoOrigen       = 0,
                    TipoDocumento    = textoDocumento,
                    ComplementoRef1  = string.Empty,
                    Concepto         = String.Format("{0}-{1} {2} {3} {4}",
                                                     tipoMovimiento,
                                                     solicitud.FolioSolicitud,
                                                     solicitudDetalle.Producto.Descripcion,
                                                     solicitudDetalle.Cantidad.ToString("N2"),
                                                     (Math.Round(solicitudDetalle.Cantidad * solicitudDetalle.PrecioPromedio, 2).ToString("C2"))),
                    Sociedad            = organizacion.Sociedad,
                    DescripcionProducto = solicitudDetalle.Producto.Descripcion,
                    Segmento            = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                };
                polizaSalida = GeneraRegistroPoliza(datos);
                polizasSalidaConsumo.Add(polizaSalida);
            }
            return(polizasSalidaConsumo);
        }
Пример #22
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="pagina"></param>
 /// <param name="filtro"></param>
 /// <returns></returns>
 public ResultadoInfo <CamionRepartoInfo> ObtenerPorPagina(PaginacionInfo pagina, CamionRepartoInfo filtro)
 {
     try
     {
         Logger.Info();
         var camionRepartoBL = new CamionRepartoBL();
         return(camionRepartoBL.ObtenerPorPagina(pagina, filtro));
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Пример #23
0
        /// <summary>
        /// Obtiene una lista paginada de CamionReparto
        /// </summary>
        /// <param name="pagina"></param>
        /// <param name="filtro"></param>
        /// <returns></returns>
        public ResultadoInfo <CamionRepartoInfo> ObtenerPorPagina(PaginacionInfo pagina, CamionRepartoInfo filtro)
        {
            try
            {
                Logger.Info();
                var result    = new ResultadoInfo <CamionRepartoInfo>();
                var condicion = da.Tabla <CamionRepartoInfo>().Where(e => e.Activo == filtro.Activo);
                if (filtro.CamionRepartoID > 0)
                {
                    condicion = condicion.Where(e => e.CamionRepartoID == filtro.CamionRepartoID);
                }
                if (!string.IsNullOrEmpty(filtro.NumeroEconomico))
                {
                    condicion = condicion.Where(e => e.NumeroEconomico.Contains(filtro.NumeroEconomico));
                }
                if (filtro.Organizacion != null && filtro.Organizacion.OrganizacionID > 0)
                {
                    condicion = condicion.Where(e => e.OrganizacionID == filtro.Organizacion.OrganizacionID);
                }
                result.TotalRegistros = condicion.Count();

                int inicio = pagina.Inicio;
                int limite = pagina.Limite;
                if (inicio > 1)
                {
                    int limiteReal = (limite - inicio) + 1;
                    inicio = (limite / limiteReal);
                    limite = limiteReal;
                }
                var paginado = condicion
                               .OrderBy(e => e.CamionRepartoID)
                               .Skip((inicio - 1) * limite)
                               .Take(limite);

                result.Lista = paginado.ToList();
                CargarOrganizaciones(result.Lista);
                CargarCentrosCosto(result.Lista);
                return(result);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
Пример #24
0
 /// <summary>
 /// Obtiene un lista paginada
 /// </summary>
 /// <param name="pagina"></param>
 /// <param name="filtro"></param>
 /// <returns></returns>
 public ResultadoInfo <CamionRepartoInfo> ObtenerPorPagina(PaginacionInfo pagina, CamionRepartoInfo filtro)
 {
     try
     {
         Dictionary <string, object> parameters = AuxCamionRepartoDAL.ObtenerParametrosPorPagina(pagina, filtro);
         DataSet ds = Retrieve("CamionReparto_ObtenerPorPagina", parameters);
         ResultadoInfo <CamionRepartoInfo> result = null;
         if (ValidateDataSet(ds))
         {
             result = MapCamionRepartoDAL.ObtenerPorPagina(ds);
         }
         return(result);
     }
     catch (SqlException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (DataException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }