示例#1
0
 /// <summary>
 ///  Método que obtiene un registro
 /// </summary>
 /// <param name="ds"></param>
 /// <returns></returns>
 public static ClaseCostoProductoInfo ObtenerPorDescripcion(DataSet ds)
 {
     try
     {
         Logger.Info();
         DataTable dt = ds.Tables[ConstantesDAL.DtDatos];
         ClaseCostoProductoInfo entidad =
             (from info in dt.AsEnumerable()
              select
              new ClaseCostoProductoInfo
         {
             ClaseCostoProductoID = info.Field <int>("ClaseCostoProductoID"),
             Almacen = new AlmacenInfo {
                 AlmacenID = info.Field <int>("AlmacenID"), Descripcion = info.Field <string>("Almacen")
             },
             Producto = new ProductoInfo {
                 ProductoId = info.Field <int>("ProductoID"), Descripcion = info.Field <string>("Producto")
             },
             CuentaSAP = new CuentaSAPInfo {
                 CuentaSAPID = info.Field <int>("CuentaSAPID"), Descripcion = info.Field <string>("CuentaSAP")
             },
             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 ClaseCostoProducto
 /// </summary>
 /// <param name="info">Valores de la entidad que será creada</param>
 public int Crear(ClaseCostoProductoInfo info)
 {
     try
     {
         Logger.Info();
         Dictionary <string, object> parameters = AuxClaseCostoProductoDAL.ObtenerParametrosCrear(info);
         int result = Create("ClaseCostoProducto_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>
 /// Obtiene un registro de ClaseCostoProducto
 /// </summary>
 /// <param name="descripcion">Descripción de la ClaseCostoProducto</param>
 /// <returns></returns>
 public ClaseCostoProductoInfo ObtenerPorDescripcion(string descripcion)
 {
     try
     {
         Logger.Info();
         Dictionary <string, object> parameters = AuxClaseCostoProductoDAL.ObtenerParametrosPorDescripcion(descripcion);
         DataSet ds = Retrieve("ClaseCostoProducto_ObtenerPorDescripcion", parameters);
         ClaseCostoProductoInfo result = null;
         if (ValidateDataSet(ds))
         {
             result = MapClaseCostoProductoDAL.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);
     }
 }
示例#4
0
 /// <summary>
 /// Metodo para Guardar/Modificar una entidad ClaseCostoProducto
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 public int Guardar(ClaseCostoProductoInfo info)
 {
     try
     {
         Logger.Info();
         var id = 0;
         if (info.ClaseCostoProductoID > 0)
         {
             info.FechaCreacion = da.FechaServidor();
             id = da.Actualizar <ClaseCostoProductoInfo>(info);
         }
         else
         {
             id = da.Insertar <ClaseCostoProductoInfo>(info);
         }
         return(id);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
示例#5
0
 /// <summary>
 /// Metodo para Guardar/Modificar una entidad ClaseCostoProducto
 /// </summary>
 /// <param name="info"></param>
 public int Guardar(ClaseCostoProductoInfo info)
 {
     try
     {
         Logger.Info();
         var claseCostoProductoDAL = new ClaseCostoProductoDAL();
         int result = info.ClaseCostoProductoID;
         if (info.ClaseCostoProductoID == 0)
         {
             result = claseCostoProductoDAL.Crear(info);
         }
         else
         {
             claseCostoProductoDAL.Actualizar(info);
         }
         return(result);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="info"></param>
 /// <param name="cuentaSAP"></param>
 public ClaseCostoProductoInfo(ClaseCostoProductoInfo info, CuentaSAPInfo cuentaSAP)
 {
     ClaseCostoProductoID = info.ClaseCostoProductoID;
     AlmacenID            = info.AlmacenID;
     ProductoID           = info.ProductoID;
     CuentaSAPID          = info.CuentaSAPID;
     Activo                = info.Activo;
     FechaCreacion         = info.FechaCreacion;
     UsuarioCreacionID     = info.UsuarioCreacionID;
     FechaModificacion     = info.FechaModificacion;
     UsuarioModificacionID = info.UsuarioModificacionID;
     CuentaSAP             = cuentaSAP;
 }
示例#7
0
 /// <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;
         }
     }
 }
示例#8
0
        /// <summary>
        /// Obtiene la información de la CostoProducto de acuerdo al almacen y producto
        /// </summary>
        /// <param name="almacenID">Identificador del almacen donde se encuentra la mercancia del producto</param>
        /// <param name="producto">Identificacador del producto</param>
        /// <returns>ClaseCostoProductoInfo</returns>
        public ClaseCostoProductoInfo ObtenerCostoAlmacenProducto(int almacenID, int producto)
        {
            ClaseCostoProductoInfo costo = null;

            try
            {
                Logger.Info();
                var costoProductoBL = new ClaseCostoProductoBL();
                costo = costoProductoBL.ObtenerPorProductoAlmacen(producto, almacenID);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(costo);
        }
 /// <summary>
 /// Inicializa el Contexto
 /// </summary>
 private void InicializaContexto()
 {
     Contexto = new ClaseCostoProductoInfo
     {
         UsuarioCreacionID = AuxConfiguracion.ObtenerUsuarioLogueado(),
         CuentaSAP         = new CuentaSAPInfo(),
         Almacen           = new AlmacenInfo
         {
             Organizacion = new OrganizacionInfo
             {
                 OrganizacionID = AuxConfiguracion.ObtenerOrganizacionUsuario(),
             },
             TipoAlmacen = new TipoAlmacenInfo()
         },
         Producto = new ProductoInfo()
     };
 }
示例#10
0
 /// <summary>
 ///  Obtiene una entidad de ClaseCostoProducto por producto y almacén
 /// </summary>
 /// <param name="productoId"></param>
 /// <param name="almacenId"></param>
 /// <returns></returns>
 public ClaseCostoProductoInfo ObtenerPorProductoAlmacen(int productoId, int almacenId)
 {
     try
     {
         Logger.Info();
         var claseCostoProductoDAL     = new Integracion.DAL.Implementacion.ClaseCostoProductoDAL();
         ClaseCostoProductoInfo result = claseCostoProductoDAL.ObtenerPorProductoAlmacen(productoId, almacenId);
         return(result);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
示例#11
0
 /// <summary>
 /// Obtiene una entidad ClaseCostoProducto por su descripción
 /// </summary>
 /// <param name="descripcion"></param>
 /// <returns></returns>
 public ClaseCostoProductoInfo ObtenerPorDescripcion(string descripcion)
 {
     try
     {
         Logger.Info();
         var claseCostoProductoDAL     = new ClaseCostoProductoDAL();
         ClaseCostoProductoInfo result = claseCostoProductoDAL.ObtenerPorDescripcion(descripcion);
         return(result);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
 /// <summary>
 /// Obtiene la lista para mostrar en el grid
 /// </summary>
 private void ObtenerListaClaseCostoProducto(int inicio, int limite)
 {
     try
     {
         if (ucPaginacion.ContextoAnterior != null)
         {
             bool contextosIguales = ucPaginacion.CompararObjetos(Contexto, ucPaginacion.ContextoAnterior);
             if (!contextosIguales)
             {
                 ucPaginacion.Inicio = 1;
                 inicio = 1;
             }
         }
         var claseCostoProductoBL       = new ClaseCostoProductoBL();
         ClaseCostoProductoInfo filtros = ObtenerFiltros();
         var pagina = new PaginacionInfo {
             Inicio = inicio, Limite = limite
         };
         ResultadoInfo <ClaseCostoProductoInfo> resultadoInfo = claseCostoProductoBL.ObtenerPorPagina(pagina, filtros);
         if (resultadoInfo != null && resultadoInfo.Lista != null &&
             resultadoInfo.Lista.Count > 0)
         {
             gridDatos.ItemsSource       = resultadoInfo.Lista;
             ucPaginacion.TotalRegistros = resultadoInfo.TotalRegistros;
         }
         else
         {
             ucPaginacion.TotalRegistros = 0;
             ucPaginacion.AsignarValoresIniciales();
             gridDatos.ItemsSource = new List <ClaseCostoProducto>();
         }
     }
     catch (ExcepcionGenerica)
     {
         SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.ClaseCostoProducto_ErrorBuscar, MessageBoxButton.OK, MessageImage.Error);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.ClaseCostoProducto_ErrorBuscar, MessageBoxButton.OK, MessageImage.Error);
     }
 }
示例#13
0
 /// <summary>
 /// Obtiene una clase producto
 /// </summary>
 /// <param name="reader"></param>
 /// <returns></returns>
 internal static ClaseCostoProductoInfo ObtenerClaseCostoPorProductoAlmacen(IDataReader reader)
 {
     try
     {
         Logger.Info();
         ClaseCostoProductoInfo elemento = null;
         while (reader.Read())
         {
             elemento = new ClaseCostoProductoInfo
             {
                 AlmacenID   = Convert.ToInt32(reader["AlmacenID"]),
                 ProductoID  = Convert.ToInt32(reader["ProductoID"]),
                 CuentaSAPID = Convert.ToInt32(reader["CuentaSAPID"]),
                 Almacen     = new AlmacenInfo
                 {
                     AlmacenID = Convert.ToInt32(reader["AlmacenID"])
                 },
                 Producto = new ProductoInfo
                 {
                     ProductoId = Convert.ToInt32(reader["ProductoID"])
                 },
                 CuentaSAP = new CuentaSAPInfo
                 {
                     CuentaSAPID = Convert.ToInt32(reader["CuentaSAPID"]),
                     Descripcion = Convert.ToString(reader["CuentaSAPDescripcion"]),
                     CuentaSAP   = Convert.ToString(reader["CuentaSAP"]),
                     Activo      = Convert.ToBoolean(reader["Activo"]).BoolAEnum()
                 },
                 ClaseCostoProductoID = Convert.ToInt32(reader["ClaseCostoProductoID"]),
                 Activo = Convert.ToBoolean(reader["CuentaSAPActivo"]).BoolAEnum()
             };
         }
         return(elemento);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
示例#14
0
 /// <summary>
 /// Obtiene el producto por almacen
 /// </summary>
 /// <param name="productoId"></param>
 /// <param name="almacenId"></param>
 /// <returns></returns>
 internal ClaseCostoProductoInfo ObtenerPorProductoAlmacen(int productoId, int almacenId)
 {
     try
     {
         Logger.Info();
         Dictionary <string, object> parameters =
             AuxClaseCostoProductoDAL.ObtenerParametrosPorProductoAlmacen(productoId, almacenId);
         using (IDataReader reader = RetrieveReader("ClaseCostoProducto_ObtenerPorProductoAlmacen", parameters))
         {
             ClaseCostoProductoInfo result = null;
             if (ValidateDataReader(reader))
             {
                 result = MapClaseCostoProductoDAL.ObtenerClaseCostoPorProductoAlmacen(reader);
             }
             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);
     }
     finally
     {
         if (Connection.State == ConnectionState.Open)
         {
             Connection.Close();
         }
     }
 }
示例#15
0
        internal static IList <ClaseCostoProductoInfo> ObtenerClaseCostoProductoPorAlmacen(IDataReader reader)
        {
            var lista = new List <ClaseCostoProductoInfo>();

            try
            {
                Logger.Info();
                ClaseCostoProductoInfo elemento;
                while (reader.Read())
                {
                    elemento = new ClaseCostoProductoInfo
                    {
                        AlmacenID   = Convert.ToInt32(reader["AlmacenID"]),
                        ProductoID  = Convert.ToInt32(reader["ProductoID"]),
                        CuentaSAPID = Convert.ToInt32(reader["CuentaSAPID"]),
                        Almacen     = new AlmacenInfo
                        {
                            AlmacenID = Convert.ToInt32(reader["AlmacenID"])
                        },
                        Producto = new ProductoInfo
                        {
                            ProductoId = Convert.ToInt32(reader["ProductoID"])
                        },
                        CuentaSAP = new CuentaSAPInfo
                        {
                            CuentaSAPID = Convert.ToInt32(reader["CuentaSAPID"])
                        },
                        ClaseCostoProductoID = Convert.ToInt32(reader["ClaseCostoProductoID"])
                    };
                    lista.Add(elemento);
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(lista);
        }
示例#16
0
 /// <summary>
 /// Metodo para actualizar un registro de ClaseCostoProducto
 /// </summary>
 /// <param name="info">Valores de la entidad que se actualizarán</param>
 public void Actualizar(ClaseCostoProductoInfo info)
 {
     try
     {
         Logger.Info();
         Dictionary <string, object> parameters = AuxClaseCostoProductoDAL.ObtenerParametrosActualizar(info);
         Update("ClaseCostoProducto_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
 /// <summary>
 /// Obtiene un lista paginada
 /// </summary>
 /// <param name="pagina"></param>
 /// <param name="filtro"></param>
 /// <returns></returns>
 public ResultadoInfo <ClaseCostoProductoInfo> ObtenerPorPagina(PaginacionInfo pagina, ClaseCostoProductoInfo filtro)
 {
     try
     {
         Logger.Info();
         var claseCostoProductoDAL = new ClaseCostoProductoDAL();
         ResultadoInfo <ClaseCostoProductoInfo> result = claseCostoProductoDAL.ObtenerPorPagina(pagina, filtro);
         return(result);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
示例#18
0
        /// <summary>
        /// Obtiene una lista paginada de ClaseCostoProducto
        /// </summary>
        /// <param name="pagina"></param>
        /// <param name="filtro"></param>
        /// <returns></returns>
        public ResultadoInfo <ClaseCostoProductoInfo> ObtenerPorPagina(PaginacionInfo pagina, ClaseCostoProductoInfo filtro)
        {
            try
            {
                Logger.Info();
                var result    = new ResultadoInfo <ClaseCostoProductoInfo>();
                var condicion = da.Tabla <ClaseCostoProductoInfo>().Where(e => e.Activo == filtro.Activo);
                if (filtro.ClaseCostoProductoID > 0)
                {
                    condicion = condicion.Where(e => e.ClaseCostoProductoID == filtro.ClaseCostoProductoID);
                }

                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.ClaseCostoProductoID)
                               .Skip((inicio - 1) * limite)
                               .Take(limite);

                result.Lista = paginado.ToList();

                return(result);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
示例#19
0
        private IList <PolizaInfo> ObtenerPoliza(SolicitudProductoReplicaInfo solicitud)
        {
            var polizasEntradaTraspaso = new List <PolizaInfo>();

            IList <ClaseCostoProductoInfo> cuentasAlmacenProductoEntrada =
                ObtenerCostosProducto(solicitud.AlmacenDestino.AlmacenID);

            if (cuentasAlmacenProductoEntrada == null)
            {
                throw new ExcepcionServicio("No se encuentran cuentas configuradas, para productos del almacén  de destino");
            }

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

            if (tipoPoliza == null)
            {
                throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA",
                                                          TipoPoliza.EntradaTraspasoSAP));
            }

            IList <CuentaSAPInfo> cuentasSap = ObtenerCuentasSAP();
            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;
            string numeroReferencia = ObtenerNumeroReferenciaFolio(solicitud.FolioSolicitud);

            FechaBL  fec      = new FechaBL();
            var      fechaObj = fec.ObtenerFechaActual();
            DateTime fecha    = fechaObj.FechaActual;

            string archivoFolio = ObtenerArchivoFolio(fecha);

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

            if (organizacion == null)
            {
                organizacion = new OrganizacionInfo
                {
                    TipoOrganizacion = new TipoOrganizacionInfo()
                };
            }
            IList <CuentaAlmacenSubFamiliaInfo> cuentasSubFamilia =
                ObtenerCostosSubFamilia(solicitud.AlmacenDestino.AlmacenID);

            ParametroOrganizacionInfo parametroCentroCosto =
                ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID,
                                                     ParametrosEnum.CTACENTROCOSTOMP.ToString());

            if (parametroCentroCosto == null)
            {
                throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE COSTO NO CONFIGURADO"));
            }
            bool afectaCosto;

            foreach (var solicitudDetalle in solicitud.Detalle.Where(a => a.Activo).ToList())
            {
                CuentaSAPInfo claveContableCargo;
                afectaCosto = ValidarAfectacionCuentaCosto(solicitudDetalle.Producto);
                if (!afectaCosto && (solicitud.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.Enfermeria.GetHashCode() ||
                                     solicitud.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ManejoGanado.GetHashCode() ||
                                     solicitud.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ReimplanteGanado.GetHashCode()))
                {
                    var cuentaSapSubFamiliaEntrada = cuentasSubFamilia.FirstOrDefault(
                        cuenta => cuenta.SubFamiliaID == solicitudDetalle.Producto.SubFamilia.SubFamiliaID);

                    if (cuentaSapSubFamiliaEntrada == null)
                    {
                        cuentaSapSubFamiliaEntrada = new CuentaAlmacenSubFamiliaInfo();
                    }
                    claveContableCargo =
                        cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapSubFamiliaEntrada.CuentaSAPID);
                }
                else
                {
                    var cuentaSapEntrada = cuentasAlmacenProductoEntrada.FirstOrDefault(
                        cuenta => cuenta.ProductoID == solicitudDetalle.ProductoID);
                    if (cuentaSapEntrada == null)
                    {
                        cuentaSapEntrada = new ClaseCostoProductoInfo();
                    }
                    claveContableCargo =
                        cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapEntrada.CuentaSAPID);
                }

                if (solicitud.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.CentroAcopio.GetHashCode())
                {
                    ParametroOrganizacionInfo cuentaMedicamento = ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID,
                                                                                                       ParametrosEnum.CuentaMedicamentoTransito.ToString());

                    if (cuentaMedicamento == null)
                    {
                        cuentaMedicamento = new ParametroOrganizacionInfo
                        {
                            Valor = string.Empty
                        };
                    }

                    claveContableCargo =
                        cuentasSap.FirstOrDefault(
                            sap =>
                            sap.CuentaSAP.Equals(cuentaMedicamento.Valor, StringComparison.InvariantCultureIgnoreCase));
                }
                if (claveContableCargo == null)
                {
                    throw new ExcepcionServicio(string.Format("No se encontró configurada la cuenta del producto {0}",
                                                              solicitudDetalle.Producto.Descripcion));
                }
                if ((solicitudDetalle.Cantidad * solicitudDetalle.PrecioUnitario) <= 0)
                {
                    continue;
                }
                var datos = new DatosPolizaInfo
                {
                    NumeroReferencia = numeroReferencia,
                    FechaEntrada     = fecha,
                    Folio            = solicitud.FolioSolicitud.ToString(CultureInfo.InvariantCulture),
                    ClaseDocumento   = postFijoRef3,
                    Importe          =
                        string.Format("{0}",
                                      Math.Round(
                                          solicitudDetalle.Cantidad * solicitudDetalle.PrecioUnitario, 2).
                                      ToString("F2")),
                    Renglon     = Convert.ToString(linea++),
                    ImporteIva  = "0",
                    Ref3        = ref3.ToString(),
                    Cuenta      = claveContableCargo.CuentaSAP,
                    CentroCosto =
                        claveContableCargo.CuentaSAP.StartsWith(PrefijoCuentaCentroCosto)
                            ? parametroCentroCosto.Valor
                            : string.Empty,
                    Division      = organizacion.Division,
                    ArchivoFolio  = archivoFolio,
                    PesoOrigen    = 0,
                    TipoDocumento = textoDocumento,
                    Concepto      = String.Format("{0}-{1} {2} {3} {4}",
                                                  tipoMovimiento,
                                                  solicitud.FolioSolicitud.ToString(
                                                      CultureInfo.InvariantCulture),
                                                  solicitudDetalle.Producto.Descripcion,
                                                  string.Format("{0} {1}.",
                                                                solicitudDetalle.Cantidad.ToString("N2"),
                                                                solicitudDetalle.Producto.UnidadMedicion.
                                                                ClaveUnidad),
                                                  solicitudDetalle.PrecioUnitario.ToString("C2")),
                    Sociedad            = organizacion.Sociedad,
                    DescripcionProducto = claveContableCargo.Descripcion,
                    Segmento            = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                };
                PolizaInfo polizaSalida = GeneraRegistroPoliza(datos);
                polizasEntradaTraspaso.Add(polizaSalida);

                var claveContableAbono = cuentasSap.FirstOrDefault(sap => sap.CuentaSAP == solicitudDetalle.CuentaSAP);
                if (claveContableAbono == null)
                {
                    throw new ExcepcionServicio(string.Format("No se encontró configurada la cuenta {0}, del producto {1}",
                                                              solicitudDetalle.CuentaSAP, solicitudDetalle.Producto.ProductoDescripcion));
                }

                datos = new DatosPolizaInfo
                {
                    NumeroReferencia = numeroReferencia,
                    FechaEntrada     = fecha,

                    Folio          = solicitud.FolioSolicitud.ToString(CultureInfo.InvariantCulture),
                    ClaseDocumento = postFijoRef3,
                    Importe        =
                        string.Format("{0}",
                                      Math.Round((solicitudDetalle.Cantidad * solicitudDetalle.PrecioUnitario) * -1, 2).ToString("F2")),
                    Renglon      = Convert.ToString(linea++),
                    ImporteIva   = "0",
                    Ref3         = ref3.ToString(),
                    Cuenta       = claveContableAbono.CuentaSAP,
                    ArchivoFolio = archivoFolio,
                    CentroCosto  =
                        claveContableAbono.CuentaSAP.StartsWith(PrefijoCuentaCentroCosto)
                            ? parametroCentroCosto.Valor
                            : string.Empty,
                    Division      = organizacion.Division,
                    PesoOrigen    = 0,
                    TipoDocumento = textoDocumento,
                    Concepto      = String.Format("{0}-{1} {2} {3} {4}",
                                                  tipoMovimiento,
                                                  solicitud.FolioSolicitud.ToString(CultureInfo.InvariantCulture),
                                                  solicitudDetalle.Producto.Descripcion,
                                                  string.Format("{0} {1}.",
                                                                solicitudDetalle.Cantidad.ToString("N2"),
                                                                solicitudDetalle.Producto.UnidadMedicion.
                                                                ClaveUnidad),
                                                  solicitudDetalle.PrecioUnitario.ToString("C2")),
                    Sociedad            = organizacion.Sociedad,
                    DescripcionProducto = claveContableAbono.Descripcion,
                    Segmento            = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                };
                polizaSalida = GeneraRegistroPoliza(datos);
                polizasEntradaTraspaso.Add(polizaSalida);
            }
            return(polizasEntradaTraspaso);
        }
示例#20
0
 /// <summary>
 /// Obtiene un lista paginada
 /// </summary>
 /// <param name="pagina"></param>
 /// <param name="filtro"></param>
 /// <returns></returns>
 public ResultadoInfo <ClaseCostoProductoInfo> ObtenerPorPagina(PaginacionInfo pagina, ClaseCostoProductoInfo filtro)
 {
     try
     {
         Dictionary <string, object> parameters = AuxClaseCostoProductoDAL.ObtenerParametrosPorPagina(pagina, filtro);
         DataSet ds = Retrieve("ClaseCostoProducto_ObtenerPorPagina", parameters);
         ResultadoInfo <ClaseCostoProductoInfo> result = null;
         if (ValidateDataSet(ds))
         {
             result = MapClaseCostoProductoDAL.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);
     }
 }
示例#21
0
        private IList <PolizaInfo> ObtenerPoliza(TraspasoMpPaMedInfo traspasoMp)
        {
            var polizasSalidaTraspaso = new List <PolizaInfo>();

            IList <ClaseCostoProductoInfo> cuentasAlmacenProductoSalida =
                ObtenerCostosProducto(traspasoMp.AlmacenOrigen.AlmacenID);
            IList <ClaseCostoProductoInfo> cuentasAlmacenProductoEntrada =
                ObtenerCostosProducto(traspasoMp.AlmacenDestino.AlmacenID);

            if (cuentasAlmacenProductoSalida == null)
            {
                throw new ExcepcionServicio("No se encuentran cuentas configuradas, para productos del almacén origen");
            }
            if (cuentasAlmacenProductoEntrada == null)
            {
                throw new ExcepcionServicio("No se encuentran cuentas configuradas, para productos del almacén  de destino");
            }

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

            if (tipoPoliza == null)
            {
                throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA",
                                                          TipoPoliza.EntradaTraspaso));
            }

            IList <CuentaSAPInfo> cuentasSap = ObtenerCuentasSAP();
            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);

            var almacenMovimientoBL = new AlmacenMovimientoBL();
            AlmacenMovimientoInfo almacenMovimiento = almacenMovimientoBL.ObtenerPorId(traspasoMp.AlmacenMovimientoID);

            string numeroReferencia = ObtenerNumeroReferenciaFolio(almacenMovimiento.FolioMovimiento);
            //string numeroReferencia = ObtenerNumeroReferencia;

            DateTime fecha        = traspasoMp.FechaTraspaso;
            string   archivoFolio = ObtenerArchivoFolio(fecha);

            var organizacionBL = new OrganizacionBL();
            OrganizacionInfo organizacionOrigen = organizacionBL.ObtenerPorAlmacenID(traspasoMp.AlmacenOrigen.AlmacenID);

            if (organizacionOrigen == null)
            {
                organizacionOrigen = new OrganizacionInfo
                {
                    TipoOrganizacion = new TipoOrganizacionInfo()
                };
            }
            OrganizacionInfo organizacionDestino = organizacionBL.ObtenerPorAlmacenID(traspasoMp.AlmacenDestino.AlmacenID);

            if (organizacionDestino == null)
            {
                organizacionDestino = new OrganizacionInfo
                {
                    TipoOrganizacion = new TipoOrganizacionInfo()
                };
            }
            IList <CuentaAlmacenSubFamiliaInfo> cuentasSubFamiliaSalida =
                ObtenerCostosSubFamilia(traspasoMp.AlmacenOrigen.AlmacenID);

            IList <CuentaAlmacenSubFamiliaInfo> cuentasSubFamiliaEntrada =
                ObtenerCostosSubFamilia(traspasoMp.AlmacenDestino.AlmacenID);

            ParametroOrganizacionInfo parametroCentroCostoOrigen =
                ObtenerParametroOrganizacionPorClave(organizacionOrigen.OrganizacionID,
                                                     ParametrosEnum.CTACENTROCOSTOMP.ToString());

            if (parametroCentroCostoOrigen == null)
            {
                throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE COSTO NO CONFIGURADO"));
            }
            ParametroOrganizacionInfo parametroCentroCostoDestino =
                ObtenerParametroOrganizacionPorClave(organizacionDestino.OrganizacionID,
                                                     ParametrosEnum.CTACENTROCOSTOMP.ToString());

            if (parametroCentroCostoDestino == null)
            {
                throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE COSTO NO CONFIGURADO"));
            }
            bool          afectaCosto;
            CuentaSAPInfo claveContableCargo;

            afectaCosto = ValidarAfectacionCuentaCosto(traspasoMp.ProductoOrigen);
            if (!afectaCosto && (traspasoMp.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.Enfermeria.GetHashCode() ||
                                 traspasoMp.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ManejoGanado.GetHashCode() ||
                                 traspasoMp.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ReimplanteGanado.GetHashCode()) ||
                traspasoMp.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.GeneralGanadera.GetHashCode())
            {
                var cuentaSapSubFamiliaEntrada = cuentasSubFamiliaEntrada.FirstOrDefault(
                    cuenta => cuenta.SubFamiliaID == traspasoMp.ProductoOrigen.SubFamilia.SubFamiliaID);

                if (cuentaSapSubFamiliaEntrada == null)
                {
                    cuentaSapSubFamiliaEntrada = new CuentaAlmacenSubFamiliaInfo();
                }
                claveContableCargo =
                    cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapSubFamiliaEntrada.CuentaSAPID);
            }
            else
            {
                var cuentaSapEntrada = cuentasAlmacenProductoEntrada.FirstOrDefault(
                    cuenta => cuenta.ProductoID == traspasoMp.ProductoOrigen.ProductoId);
                if (cuentaSapEntrada == null)
                {
                    cuentaSapEntrada = new ClaseCostoProductoInfo();
                }
                claveContableCargo =
                    cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapEntrada.CuentaSAPID);
            }

            if (traspasoMp.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.CentroAcopio.GetHashCode())
            {
                ParametroOrganizacionInfo cuentaMedicamento = ObtenerParametroOrganizacionPorClave(organizacionDestino.OrganizacionID,
                                                                                                   ParametrosEnum.CuentaMedicamentoTransito.ToString());

                if (cuentaMedicamento == null)
                {
                    cuentaMedicamento = new ParametroOrganizacionInfo
                    {
                        Valor = string.Empty
                    };
                }

                claveContableCargo =
                    cuentasSap.FirstOrDefault(
                        sap =>
                        sap.CuentaSAP.Equals(cuentaMedicamento.Valor, StringComparison.InvariantCultureIgnoreCase));
            }
            if (claveContableCargo == null)
            {
                throw new ExcepcionServicio(string.Format("No se encontró configurada la cuenta del producto {0}",
                                                          traspasoMp.ProductoOrigen.ProductoDescripcion));
            }
            linea = 0;
            linea++;
            var datos = new DatosPolizaInfo
            {
                NumeroReferencia = numeroReferencia,
                FechaEntrada     = fecha,
                Folio            = numeroReferencia,
                ClaseDocumento   = postFijoRef3,
                Importe          = string.Format("{0}", traspasoMp.ImporteTraspaso.ToString("F2")),
                Renglon          = Convert.ToString(linea),
                ImporteIva       = "0",
                Ref3             = ref3.ToString(),
                Cuenta           = claveContableCargo.CuentaSAP,
                CentroCosto      =
                    claveContableCargo.CuentaSAP.StartsWith(PrefijoCuentaCentroCosto)
                        ? parametroCentroCostoDestino.Valor
                        : string.Empty,
                Division      = organizacionDestino.Division,
                ArchivoFolio  = archivoFolio,
                PesoOrigen    = 0,
                TipoDocumento = textoDocumento,
                Concepto      = String.Format("{0}-{1} {2} {3} {4}",
                                              tipoMovimiento,
                                              numeroReferencia,
                                              traspasoMp.ProductoOrigen.ProductoDescripcion,
                                              string.Format("{0} {1}.",
                                                            traspasoMp.CantidadTraspasarDestino.ToString("N2"),
                                                            traspasoMp.ProductoOrigen.UnidadMedicion.ClaveUnidad),
                                              traspasoMp.PrecioTraspasoDestino.ToString("C2")),
                Sociedad            = organizacionDestino.Sociedad,
                DescripcionProducto = claveContableCargo.Descripcion,
                Segmento            = string.Format("{0}{1}", PrefijoSegmento, organizacionDestino.Sociedad),
            };
            PolizaInfo polizaSalida = GeneraRegistroPoliza(datos);

            polizasSalidaTraspaso.Add(polizaSalida);

            #region CuentaAbono

            CuentaSAPInfo claveContableAbono = null;
            afectaCosto = ValidarAfectacionCuentaCosto(traspasoMp.ProductoOrigen);
            if (!afectaCosto && (traspasoMp.AlmacenOrigen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.Enfermeria.GetHashCode() ||
                                 traspasoMp.AlmacenOrigen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ManejoGanado.GetHashCode() ||
                                 traspasoMp.AlmacenOrigen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ReimplanteGanado.GetHashCode()) ||
                traspasoMp.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.GeneralGanadera.GetHashCode())
            {
                var cuentaSapSubFamiliaSalida = cuentasSubFamiliaSalida.FirstOrDefault(
                    cuenta => cuenta.SubFamiliaID == traspasoMp.ProductoOrigen.SubFamilia.SubFamiliaID);

                if (cuentaSapSubFamiliaSalida == null)
                {
                    cuentaSapSubFamiliaSalida = new CuentaAlmacenSubFamiliaInfo();
                }
                claveContableAbono =
                    cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapSubFamiliaSalida.CuentaSAPID);
            }
            else
            {
                var cuentaSapSalida = cuentasAlmacenProductoSalida.FirstOrDefault(
                    cuenta => cuenta.ProductoID == traspasoMp.ProductoOrigen.ProductoId);
                if (cuentaSapSalida == null)
                {
                    cuentaSapSalida = new ClaseCostoProductoInfo();
                }
                claveContableAbono =
                    cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapSalida.CuentaSAPID);
            }

            if (traspasoMp.AlmacenOrigen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.CentroAcopio.GetHashCode())
            {
                ParametroOrganizacionInfo cuentaMedicamento = ObtenerParametroOrganizacionPorClave(organizacionOrigen.OrganizacionID,
                                                                                                   ParametrosEnum.CuentaMedicamentoTransito.ToString());

                if (cuentaMedicamento == null)
                {
                    cuentaMedicamento = new ParametroOrganizacionInfo
                    {
                        Valor = string.Empty
                    };
                }

                claveContableAbono =
                    cuentasSap.FirstOrDefault(
                        sap =>
                        sap.CuentaSAP.Equals(cuentaMedicamento.Valor, StringComparison.InvariantCultureIgnoreCase));
            }
            if (claveContableAbono == null)
            {
                throw new ExcepcionServicio(string.Format("No se encontró configurada la cuenta del producto {0}",
                                                          traspasoMp.ProductoOrigen.ProductoDescripcion));
            }
            #endregion CuentaAbono

            linea++;
            datos = new DatosPolizaInfo
            {
                NumeroReferencia = numeroReferencia,
                FechaEntrada     = fecha,
                Folio            = numeroReferencia,
                ClaseDocumento   = postFijoRef3,
                Importe          =
                    string.Format("{0}", (traspasoMp.ImporteTraspaso * -1).ToString("F2")),
                Renglon      = Convert.ToString(linea),
                ImporteIva   = "0",
                Ref3         = ref3.ToString(),
                Cuenta       = claveContableAbono.CuentaSAP,
                ArchivoFolio = archivoFolio,
                CentroCosto  =
                    claveContableAbono.CuentaSAP.StartsWith(PrefijoCuentaCentroCosto)
                        ? parametroCentroCostoOrigen.Valor
                        : string.Empty,
                Division      = organizacionOrigen.Division,
                PesoOrigen    = 0,
                TipoDocumento = textoDocumento,
                Concepto      = String.Format("{0}-{1} {2} {3} {4}",
                                              tipoMovimiento,
                                              numeroReferencia,
                                              traspasoMp.ProductoOrigen.ProductoDescripcion,
                                              string.Format("{0} {1}.",
                                                            traspasoMp.CantidadTraspasarOrigen.ToString("N2"),
                                                            traspasoMp.ProductoOrigen.UnidadMedicion.ClaveUnidad),
                                              traspasoMp.PrecioTraspasoOrigen.ToString("C2")),
                Sociedad            = organizacionOrigen.Sociedad,
                DescripcionProducto = claveContableAbono.Descripcion,
                Segmento            = string.Format("{0}{1}", PrefijoSegmento, organizacionOrigen.Sociedad),
            };
            polizaSalida = GeneraRegistroPoliza(datos);
            polizasSalidaTraspaso.Add(polizaSalida);

            return(polizasSalidaTraspaso);
        }
示例#22
0
        private IList <PolizaInfo> ObtenerPoliza(ContenedorEntradaMateriaPrimaInfo premezcla)
        {
            var polizaPremezcla = new List <PolizaInfo>();

            OrganizacionInfo organizacion =
                ObtenerOrganizacionIVA(premezcla.EntradaProducto.Organizacion.OrganizacionID);

            IList <CuentaSAPInfo>      cuentasSap       = ObtenerCuentasSAP();
            IList <UnidadMedicionInfo> unidadesMedicion = ObtenerUnidadesMedicion();

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

            if (tipoPoliza == null)
            {
                throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA", TipoPoliza.PolizaSubProducto));
            }

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

            IList <ClaseCostoProductoInfo> clasesCostoProducto =
                ObtenerCostosProducto(premezcla.EntradaProducto.AlmacenMovimiento.Almacen.AlmacenID);

            ProductoInfo         producto;
            PremezclaDetalleInfo premezclaDetalle;
            DatosPolizaInfo      datos;

            int      folio = premezcla.EntradaProducto.Folio;
            DateTime fecha = premezcla.EntradaProducto.Fecha;

            var renglon     = 0;
            int milisegundo = DateTime.Now.Millisecond;

            var ref3 = new StringBuilder();

            ref3.Append("03");
            ref3.Append(Convert.ToString(folio).PadLeft(10, ' '));
            ref3.Append(new Random(10).Next(10, 20));
            ref3.Append(new Random(30).Next(30, 40));
            ref3.Append(milisegundo);
            ref3.Append(postFijoRef3);

            string archivoFolio = ObtenerArchivoFolio(fecha);
            string unidad;

            //string numeroReferencia = string.Format("{0}{1}", folio, ObtenerNumeroReferencia);
            string numeroReferencia = ObtenerNumeroReferenciaFolio(folio);

            ClaseCostoProductoInfo costoProducto;
            CuentaSAPInfo          cuentaSap;
            PolizaInfo             poliza;
            decimal importe        = 0;
            decimal importeDetalle = 0;

            for (var index = 0; index < premezcla.EntradaProducto.PremezclaInfo.ListaPremezclaDetalleInfos.Count; index++)
            {
                premezclaDetalle = premezcla.EntradaProducto.PremezclaInfo.ListaPremezclaDetalleInfos[index];

                producto = premezclaDetalle.Producto;

                unidad =
                    unidadesMedicion.Where(clave => clave.UnidadID == producto.UnidadMedicion.UnidadID).Select(
                        uni => uni.ClaveUnidad).FirstOrDefault();

                costoProducto =
                    clasesCostoProducto.FirstOrDefault(clave => clave.ProductoID == producto.ProductoId);
                if (costoProducto == null)
                {
                    costoProducto = new ClaseCostoProductoInfo();
                }
                cuentaSap =
                    cuentasSap.FirstOrDefault(cuenta => cuenta.CuentaSAPID == costoProducto.CuentaSAPID);
                if (cuentaSap == null)
                {
                    throw new ExcepcionServicio(string.Format("{0} {1}", "NO HAY CONFIGURACION PARA EL PRODUCTO",
                                                              producto.Descripcion));
                }

                importeDetalle = premezclaDetalle.Kilogramos * premezclaDetalle.Lote.PrecioPromedio;
                importe       += importeDetalle;
                renglon++;
                datos = new DatosPolizaInfo
                {
                    NumeroReferencia = numeroReferencia,
                    FechaEntrada     = fecha,
                    Folio            = folio.ToString(),
                    Importe          =
                        string.Format("{0}",
                                      (importeDetalle * -1).
                                      ToString("F2")),
                    IndicadorImpuesto = String.Empty,
                    Renglon           = Convert.ToString(renglon),
                    ImporteIva        = "0",
                    Ref3             = ref3.ToString(),
                    Cuenta           = cuentaSap.CuentaSAP,
                    ArchivoFolio     = archivoFolio,
                    DescripcionCosto = producto.Descripcion,
                    PesoOrigen       = Math.Round(premezclaDetalle.Kilogramos, 2),
                    Division         = organizacion.Division,
                    TipoDocumento    = textoDocumento,
                    ClaseDocumento   = postFijoRef3,
                    Concepto         = String.Format("{0}-{1} {2} {3} {4} ${5} {6}",
                                                     tipoMovimiento,
                                                     folio,
                                                     premezclaDetalle.Kilogramos.ToString("N2"),
                                                     unidad, producto.Descripcion,
                                                     (importeDetalle).ToString("F2"),
                                                     postFijoRef3),
                    Sociedad = organizacion.Sociedad,
                    Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad)
                };
                poliza = GeneraRegistroPoliza(datos);
                polizaPremezcla.Add(poliza);
            }
            producto = premezcla.EntradaProducto.Producto;

            var productoBL = new ProductoBL();

            producto = productoBL.ObtenerPorID(producto);

            unidad =
                unidadesMedicion.Where(clave => clave.UnidadID == producto.UnidadMedicion.UnidadID).Select(
                    uni => uni.ClaveUnidad).FirstOrDefault();
            costoProducto =
                clasesCostoProducto.FirstOrDefault(clave => clave.ProductoID == producto.ProductoId);
            if (costoProducto == null)
            {
                costoProducto = new ClaseCostoProductoInfo();
            }
            cuentaSap = cuentasSap.FirstOrDefault(clave => clave.CuentaSAPID == costoProducto.CuentaSAPID);
            if (cuentaSap == null)
            {
                throw new ExcepcionServicio(string.Format("{0} {1}", "NO HAY CONFIGURACION PARA EL PRODUCTO",
                                                          producto.Descripcion));
            }
            decimal peso = premezcla.EntradaProducto.PremezclaInfo.ListaPremezclaDetalleInfos.Sum(
                pre => Math.Abs(pre.Kilogramos));

            renglon++;
            datos = new DatosPolizaInfo
            {
                NumeroReferencia = numeroReferencia,
                FechaEntrada     = fecha,
                Folio            = folio.ToString(),
                Importe          =
                    string.Format("{0}",
                                  (importe).ToString("F2")),
                IndicadorImpuesto = String.Empty,
                Renglon           = Convert.ToString(renglon),
                ImporteIva        = "0",
                Ref3             = ref3.ToString(),
                Cuenta           = cuentaSap.CuentaSAP,
                ArchivoFolio     = archivoFolio,
                DescripcionCosto = premezcla.EntradaProducto.Producto.Descripcion,
                PesoOrigen       =
                    Math.Round(peso, 2),
                Division       = organizacion.Division,
                TipoDocumento  = textoDocumento,
                ClaseDocumento = postFijoRef3,
                Concepto       = String.Format("{0}-{1} {2} {3} {4} ${5} {6}",
                                               tipoMovimiento,
                                               folio,
                                               (peso).ToString("N2"),
                                               unidad, premezcla.EntradaProducto.Producto.Descripcion,
                                               (importe).ToString("F2"),
                                               postFijoRef3),
                Sociedad = organizacion.Sociedad,
                Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad)
            };
            poliza = GeneraRegistroPoliza(datos);
            polizaPremezcla.Add(poliza);

            return(polizaPremezcla);
        }
示例#23
0
        private IList <PolizaInfo> ObtenerPoliza(ProduccionFormulaInfo produccionFormula)
        {
            var polizasProduccionAlimento = new List <PolizaInfo>();

            IList <ClaseCostoProductoInfo> cuentasAlmacenProductoSalida =
                ObtenerCostosProducto(produccionFormula.Almacen.AlmacenID);

            if (cuentasAlmacenProductoSalida == null || !cuentasAlmacenProductoSalida.Any())
            {
                throw new ExcepcionServicio("No se encuentran cuentas configuradas, para productos del almacén  de planta de alimentos");
            }
            IList <CuentaSAPInfo> cuentasSap = ObtenerCuentasSAP();

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

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

            var linea = 1;
            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);

            var almacenMovimientoBL = new AlmacenMovimientoBL();

            AlmacenMovimientoInfo almacenMovimiento =
                almacenMovimientoBL.ObtenerPorId(produccionFormula.AlmacenMovimientoEntradaID);

            //string numeroReferencia = ObtenerNumeroReferencia;
            string numeroReferencia = ObtenerNumeroReferenciaFolio(almacenMovimiento.FolioMovimiento);

            DateTime fecha        = produccionFormula.FechaProduccion;
            string   archivoFolio = ObtenerArchivoFolio(fecha);

            OrganizacionInfo organizacion = ObtenerOrganizacionIVA(produccionFormula.Organizacion.OrganizacionID);

            if (organizacion == null)
            {
                organizacion = new OrganizacionInfo
                {
                    TipoOrganizacion = new TipoOrganizacionInfo()
                };
            }

            foreach (var produccionDetalle in produccionFormula.ProduccionFormulaDetalle)
            {
                CuentaSAPInfo claveContableCargo;
                var           cuentaSapEntrada = cuentasAlmacenProductoSalida.FirstOrDefault(
                    cuenta => cuenta.ProductoID == produccionFormula.Formula.Producto.ProductoId);

                if (cuentaSapEntrada == null)
                {
                    cuentaSapEntrada = new ClaseCostoProductoInfo();
                }

                claveContableCargo = cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapEntrada.CuentaSAPID);

                if (claveContableCargo == null)
                {
                    throw new ExcepcionServicio(string.Format("No se encontró configurada la cuenta del producto {0}", produccionFormula.Formula.Producto.ProductoDescripcion));
                }

                var datos = new DatosPolizaInfo
                {
                    NumeroReferencia = numeroReferencia,
                    FechaEntrada     = produccionFormula.FechaProduccion,
                    Folio            = numeroReferencia,
                    CabezasRecibidas = string.Empty,
                    NumeroDocumento  = string.Empty,
                    ClaseDocumento   = postFijoRef3,
                    ClaveProveedor   = string.Empty,
                    Importe
                        = string.Format("{0}", Math.Round(produccionDetalle.CantidadProducto * produccionDetalle.PrecioPromedio, 2).ToString("F2")),
                    IndicadorImpuesto = String.Empty,
                    CentroCosto       = string.Empty,
                    Renglon           = Convert.ToString(linea++),
                    Cabezas           = string.Empty,
                    ImporteIva        = "0",
                    Ref3             = ref3.ToString(),
                    Cuenta           = claveContableCargo.CuentaSAP,
                    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,
                                                     numeroReferencia,
                                                     produccionDetalle.Producto.ProductoDescripcion,
                                                     (string.Format("{0} {1}.", produccionDetalle.CantidadProducto.ToString("N2"), produccionDetalle.Producto.UnidadMedicion.ClaveUnidad)),
                                                     produccionDetalle.PrecioPromedio.ToString("C2")),
                    Sociedad            = organizacion.Sociedad,
                    DescripcionProducto = produccionDetalle.Producto.ProductoDescripcion,
                    Segmento            = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                };
                PolizaInfo polizaSalida = GeneraRegistroPoliza(datos);
                polizasProduccionAlimento.Add(polizaSalida);

                var cuentaSapSale = cuentasAlmacenProductoSalida.FirstOrDefault(
                    cuenta => cuenta.ProductoID == produccionDetalle.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}", produccionDetalle.Producto.ProductoDescripcion));
                }

                datos = new DatosPolizaInfo
                {
                    NumeroReferencia  = numeroReferencia,
                    FechaEntrada      = produccionFormula.FechaProduccion,
                    Folio             = numeroReferencia,
                    CabezasRecibidas  = string.Empty,
                    NumeroDocumento   = string.Empty,
                    ClaseDocumento    = postFijoRef3,
                    ClaveProveedor    = string.Empty,
                    Importe           = string.Format("{0}", (Math.Round(produccionDetalle.CantidadProducto * produccionDetalle.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,
                                                     numeroReferencia,
                                                     produccionDetalle.Producto.ProductoDescripcion,
                                                     (string.Format("{0} {1}.", produccionDetalle.CantidadProducto.ToString("N2"), produccionDetalle.Producto.UnidadMedicion.ClaveUnidad)),
                                                     produccionDetalle.PrecioPromedio.ToString("C2")),
                    Sociedad            = organizacion.Sociedad,
                    DescripcionProducto = produccionDetalle.Producto.ProductoDescripcion,
                    Segmento            = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                };
                polizaSalida = GeneraRegistroPoliza(datos);
                polizasProduccionAlimento.Add(polizaSalida);
            }
            return(polizasProduccionAlimento);
        }
        private IList <PolizaInfo> ObtenerPoliza(SalidaProductoInfo salidaProducto)
        {
            var polizasSalida = new List <PolizaInfo>();

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

            if (tipoPoliza == null)
            {
                throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA",
                                                          TipoPoliza.SalidaVentaProducto));
            }

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

            var linea = 1;
            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 = string.Format("{0}{1}", salidaProducto.FolioSalida, ObtenerNumeroReferencia);
            string numeroReferencia = ObtenerNumeroReferenciaFolio(salidaProducto.FolioSalida);

            IList <CuentaSAPInfo>          cuentasSAP         = ObtenerCuentasSAP();
            IList <ClaseCostoProductoInfo> almacenesProductos = ObtenerCostosProducto(salidaProducto.Almacen.AlmacenID);
            OrganizacionInfo organizacion = ObtenerOrganizacionIVA(salidaProducto.Organizacion.OrganizacionID);

            if (organizacion == null)
            {
                organizacion = new OrganizacionInfo
                {
                    TipoOrganizacion = new TipoOrganizacionInfo()
                };
            }

            ClaseCostoProductoInfo almacenProducto =
                almacenesProductos.FirstOrDefault(prod => prod.ProductoID == salidaProducto.Producto.ProductoId);

            if (almacenProducto == null)
            {
                throw new ExcepcionServicio(string.Format("{0} {1} {2}", "CUENTA PARA PRODUCTO",
                                                          salidaProducto.Producto.Descripcion, "NO CONFIGURADA"));
            }
            CuentaSAPInfo cuentaSAP =
                cuentasSAP.FirstOrDefault(cuenta => cuenta.CuentaSAPID == almacenProducto.CuentaSAPID);

            if (cuentaSAP == null)
            {
                cuentaSAP = new CuentaSAPInfo
                {
                    Descripcion = string.Empty,
                    CuentaSAP   = string.Empty
                };
            }

            ClaveContableInfo claveContableCosto = ObtenerCuentaInventario(salidaProducto.Organizacion.
                                                                           OrganizacionID,
                                                                           TipoPoliza.ConsumoAlimento);

            if (claveContableCosto == null)
            {
                throw new ExcepcionServicio(string.Format("{0}", "CUENTA DE COSTO NO CONFIGURADA"));
            }
            ClaveContableInfo claveContableBeneficios = ObtenerCuentaInventario(salidaProducto.Organizacion.
                                                                                OrganizacionID,
                                                                                TipoPoliza.SalidaVentaProducto);

            if (claveContableBeneficios == null)
            {
                throw new ExcepcionServicio(string.Format("{0}", "CUENTA DE BENEFICIOS NO CONFIGURADA"));
            }

            ParametroOrganizacionInfo parametroCentroCosto =
                ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID,
                                                     ParametrosEnum.CTACENTROCOSTOMP.ToString());

            if (parametroCentroCosto == null)
            {
                throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE COSTO NO CONFIGURADO"));
            }

            ParametroOrganizacionInfo parametroCentroBeneficio =
                ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID,
                                                     ParametrosEnum.CTACENTROBENEFICIOMP.ToString());

            if (parametroCentroBeneficio == null)
            {
                throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE BENEFICIO NO CONFIGURADO"));
            }

            string archivoFolio = ObtenerArchivoFolio(salidaProducto.FechaSalida);
            int    cantidad     = salidaProducto.PesoBruto - salidaProducto.PesoTara;

            var almacenMovimientoDetalleBL = new AlmacenMovimientoDetalleBL();

            AlmacenMovimientoDetalle detalleMovimiento =
                almacenMovimientoDetalleBL.ObtenerPorAlmacenMovimientoID(
                    salidaProducto.AlmacenMovimiento.AlmacenMovimientoID);

            if (detalleMovimiento == null)
            {
                detalleMovimiento = new AlmacenMovimientoDetalle();
            }

            if (unidades == null)
            {
                unidades = ObtenerUnidadesMedicion();
            }
            if (productos == null)
            {
                productos = ObtenerProductos();
            }
            ProductoInfo producto =
                productos.FirstOrDefault(clave => clave.ProductoId == salidaProducto.Producto.ProductoId);

            if (producto == null)
            {
                producto = new ProductoInfo();
            }
            switch ((SubFamiliasEnum)producto.SubfamiliaId)
            {
            case SubFamiliasEnum.Granos:
                claveContableBeneficios.Valor = string.Concat(claveContableBeneficios.Valor,
                                                              PostFijoSubFamiliaGranos);
                claveContableCosto.Valor = string.Concat(claveContableCosto.Valor, PostFijoSubFamiliaGranos);
                break;

            default:
                claveContableBeneficios.Valor = string.Concat(claveContableBeneficios.Valor,
                                                              PostFijoSubFamiliaNoGranos);
                claveContableCosto.Valor = string.Concat(claveContableCosto.Valor, PostFijoSubFamiliaNoGranos);
                break;
            }
            var traspaso = false;

            if (salidaProducto.TipoMovimiento.TipoMovimientoID == TipoMovimiento.ProductoSalidaTraspaso.GetHashCode() ||
                salidaProducto.TipoMovimiento.Descripcion.Equals("salida por traspaso", StringComparison.InvariantCultureIgnoreCase))
            {
                salidaProducto.Cliente = new ClienteInfo
                {
                    CodigoSAP   = salidaProducto.CuentaSAP.CuentaSAP,
                    Descripcion = salidaProducto.CuentaSAP.Descripcion
                };
                traspaso = true;
            }
            string unidad = unidades.Where(clave => clave.UnidadID == producto.UnidadId).
                            Select(uni => uni.ClaveUnidad).FirstOrDefault();
            var datos = new DatosPolizaInfo
            {
                NumeroReferencia = numeroReferencia,
                FechaEntrada     = salidaProducto.FechaSalida,
                Folio            = salidaProducto.FolioSalida.ToString(),
                Cliente          = traspaso ? string.Empty : salidaProducto.Cliente.CodigoSAP,
                Cuenta           = traspaso ? salidaProducto.Cliente.CodigoSAP : string.Empty,
                Importe          = string.Format("{0}", salidaProducto.Importe.ToString("F2")),
                Renglon          = Convert.ToString(linea++),
                ImporteIva       = "0",
                ClaseDocumento   = postFijoRef3,
                Ref3             = ref3.ToString(),
                Division         = organizacion.Division,
                ArchivoFolio     = archivoFolio,
                DescripcionCosto = salidaProducto.Cliente.Descripcion,
                PesoOrigen       = cantidad,
                TipoDocumento    = textoDocumento,
                Concepto         = String.Format("{0}-{1} {2} {3} {4}",
                                                 tipoMovimiento,
                                                 salidaProducto.FolioSalida, cantidad.ToString("N0"),
                                                 unidad,
                                                 cuentaSAP.Descripcion),
                Sociedad = organizacion.Sociedad,
                Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad)
            };
            PolizaInfo polizaSalida = GeneraRegistroPoliza(datos);

            polizasSalida.Add(polizaSalida);

            datos = new DatosPolizaInfo
            {
                NumeroReferencia = numeroReferencia,
                FechaEntrada     = salidaProducto.FechaSalida,
                Folio            = salidaProducto.FolioSalida.ToString(),
                Importe          = (detalleMovimiento.Importe * -1).ToString("F2"),
                Renglon          = Convert.ToString(linea++),
                ImporteIva       = "0",
                Ref3             = ref3.ToString(),
                Cuenta           = cuentaSAP.CuentaSAP,
                DescripcionCosto = cuentaSAP.Descripcion,
                Division         = organizacion.Division,
                ArchivoFolio     = archivoFolio,
                PesoOrigen       = cantidad,
                ClaseDocumento   = postFijoRef3,
                TipoDocumento    = textoDocumento,
                Concepto         = String.Format("{0}-{1} {2} {3} {4}",
                                                 tipoMovimiento,
                                                 salidaProducto.FolioSalida, cantidad.ToString("N0"),
                                                 unidad,
                                                 cuentaSAP.Descripcion),
                Sociedad = organizacion.Sociedad,
                Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad)
            };
            polizaSalida = GeneraRegistroPoliza(datos);
            polizasSalida.Add(polizaSalida);

            if (!traspaso)
            {
                cuentaSAP = cuentasSAP.FirstOrDefault(cuenta => cuenta.CuentaSAP == claveContableCosto.Valor);
                if (cuentaSAP == null)
                {
                    throw new ExcepcionServicio("CUENTA DE COSTO NO CONFIGURADA");
                }
                datos = new DatosPolizaInfo
                {
                    NumeroReferencia = numeroReferencia,
                    FechaEntrada     = salidaProducto.FechaSalida,
                    Folio            = salidaProducto.FolioSalida.ToString(),
                    Importe          = detalleMovimiento.Importe.ToString("F2"),
                    Renglon          = Convert.ToString(linea++),
                    ImporteIva       = "0",
                    Ref3             = ref3.ToString(),
                    Cuenta           = cuentaSAP.CuentaSAP,
                    Division         = organizacion.Division,
                    ArchivoFolio     = archivoFolio,
                    DescripcionCosto = cuentaSAP.Descripcion,
                    CentroCosto      =
                        claveContableCosto.Valor.StartsWith(PrefijoCuentaCentroCosto) ||
                        claveContableCosto.Valor.StartsWith(PrefijoCuentaCentroGasto)
                                       ? parametroCentroCosto.Valor
                                       : string.Empty,
                    //CentroBeneficio =
                    //    claveContableBeneficios.Valor.StartsWith(PrefijoCuentaCentroBeneficio)
                    //        ? parametroCentroBeneficio.Valor
                    //        : string.Empty,
                    PesoOrigen     = cantidad,
                    ClaseDocumento = postFijoRef3,
                    TipoDocumento  = textoDocumento,
                    Concepto       = String.Format("{0}-{1} {2} {3} {4}",
                                                   tipoMovimiento,
                                                   salidaProducto.FolioSalida, cantidad.ToString("N0"),
                                                   unidad,
                                                   cuentaSAP.Descripcion),
                    Sociedad = organizacion.Sociedad,
                    Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad)
                };
                polizaSalida = GeneraRegistroPoliza(datos);
                polizasSalida.Add(polizaSalida);

                cuentaSAP = cuentasSAP.FirstOrDefault(cuenta => cuenta.CuentaSAP == claveContableBeneficios.Valor);
                if (cuentaSAP == null)
                {
                    throw new ExcepcionServicio("CUENTA DE BENEFICIOS NO CONFIGURADA");
                }
                datos = new DatosPolizaInfo
                {
                    NumeroReferencia = numeroReferencia,
                    FechaEntrada     = salidaProducto.FechaSalida,
                    Folio            = salidaProducto.FolioSalida.ToString(),
                    Importe          = string.Format("{0}", (salidaProducto.Importe * -1).ToString("F2")),
                    Renglon          = Convert.ToString(linea),
                    ImporteIva       = "0",
                    Ref3             = ref3.ToString(),
                    Cuenta           = cuentaSAP.CuentaSAP,
                    Division         = organizacion.Division,
                    ArchivoFolio     = archivoFolio,
                    DescripcionCosto = cuentaSAP.Descripcion,
                    //CentroCosto =
                    //    claveContableCosto.Valor.StartsWith(PrefijoCuentaCentroCosto) ||
                    //    claveContableCosto.Valor.StartsWith(PrefijoCuentaCentroGasto)
                    //        ? parametroCentroCosto.Valor
                    //        : string.Empty,
                    CentroBeneficio =
                        claveContableBeneficios.Valor.StartsWith(PrefijoCuentaCentroBeneficio)
                                        ? parametroCentroBeneficio.Valor
                                        : string.Empty,
                    PesoOrigen     = cantidad,
                    ClaseDocumento = postFijoRef3,
                    TipoDocumento  = textoDocumento,
                    Concepto       = String.Format("{0}-{1} {2} {3} {4}",
                                                   tipoMovimiento,
                                                   salidaProducto.FolioSalida, cantidad.ToString("N0"),
                                                   unidad,
                                                   cuentaSAP.Descripcion),
                    Sociedad = organizacion.Sociedad,
                    Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad)
                };
                polizaSalida = GeneraRegistroPoliza(datos);
                polizasSalida.Add(polizaSalida);
            }

            return(polizasSalida);
        }
示例#25
0
 /// <summary>
 /// Constructor para editar una entidad ClaseCostoProducto Existente
 /// </summary>
 /// <param name="claseCostoProductoInfo"></param>
 public ClaseCostoProductoEdicion(ClaseCostoProductoInfo claseCostoProductoInfo)
 {
     InitializeComponent();
     claseCostoProductoInfo.UsuarioModificacionID = AuxConfiguracion.ObtenerUsuarioLogueado();
     Contexto = claseCostoProductoInfo;
 }
示例#26
0
        /// <summary>
        /// Metodo que valida los datos para guardar
        /// </summary>
        /// <returns></returns>
        private bool ValidaGuardar()
        {
            bool   resultado = true;
            string mensaje   = string.Empty;

            try
            {
                if (string.IsNullOrWhiteSpace(txtClaseCostoProductoID.Text))
                {
                    resultado = false;
                    mensaje   = Properties.Resources.ClaseCostoProductoEdicion_MsgClaseCostoProductoIDRequerida;
                    txtClaseCostoProductoID.Focus();
                }
                else if (Contexto.Almacen == null || Contexto.Almacen.AlmacenID == 0)
                {
                    resultado = false;
                    mensaje   = Properties.Resources.ClaseCostoProductoEdicion_MsgAlmacenIDRequerida;
                    skAyudaAlmacen.AsignarFoco();
                }
                else if (Contexto.Producto == null || Contexto.Producto.ProductoId == 0)
                {
                    resultado = false;
                    mensaje   = Properties.Resources.ClaseCostoProductoEdicion_MsgProductoIDRequerida;
                    skAyudaProducto.AsignarFoco();
                }
                else if (Contexto.CuentaSAP == null || Contexto.CuentaSAP.CuentaSAPID == 0)
                {
                    resultado = false;
                    mensaje   = Properties.Resources.ClaseCostoProductoEdicion_MsgCuentaSAPIDRequerida;
                    skAyudaCuentaSAP.AsignarFoco();
                }
                else if (cmbActivo.SelectedItem == null)
                {
                    resultado = false;
                    mensaje   = Properties.Resources.ClaseCostoProductoEdicion_MsgActivoRequerida;
                    cmbActivo.Focus();
                }
                else
                {
                    var claseCostoProductoBL = new ClaseCostoProductoBL();
                    IList <ClaseCostoProductoInfo> claseCostoProductoAlmacen =
                        claseCostoProductoBL.ObtenerPorAlmacen(Contexto.Almacen.AlmacenID);

                    ClaseCostoProductoInfo claseCostoProducto =
                        claseCostoProductoAlmacen.FirstOrDefault(
                            clase =>
                            clase.Producto.ProductoId == Contexto.Producto.ProductoId);

                    if (claseCostoProducto != null && (Contexto.ClaseCostoProductoID == 0 || Contexto.ClaseCostoProductoID != claseCostoProducto.ClaseCostoProductoID))
                    {
                        resultado = false;
                        mensaje   = string.Format(Properties.Resources.ClaseCostoProductoEdicion_MsgRegistroDuplicado, claseCostoProducto.ClaseCostoProductoID);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }

            if (!string.IsNullOrWhiteSpace(mensaje))
            {
                SkMessageBox.Show(this, mensaje, MessageBoxButton.OK, MessageImage.Warning);
            }
            return(resultado);
        }
示例#27
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);
        }