Ejemplo n.º 1
0
 internal static IList <UnidadMedicionInfo> ObtenerTodos(IDataReader reader)
 {
     try
     {
         Logger.Info();
         var lista = new List <UnidadMedicionInfo>();
         UnidadMedicionInfo elemento;
         while (reader.Read())
         {
             elemento = new UnidadMedicionInfo
             {
                 UnidadID    = Convert.ToInt32(reader["UnidadID"]),
                 Descripcion = Convert.ToString(reader["Descripcion"]),
                 ClaveUnidad = Convert.ToString(reader["ClaveUnidad"]),
                 Activo      = Convert.ToBoolean(reader["Activo"]).BoolAEnum(),
             };
             lista.Add(elemento);
         }
         return(lista);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Metodo para Guardar/Modificar una entidad UnidadMedicion
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 public int Guardar(UnidadMedicionInfo info)
 {
     try
     {
         Logger.Info();
         var id = 0;
         if (info.UnidadID > 0)
         {
             info.FechaModificacion = da.FechaServidor();
             id = da.Actualizar <UnidadMedicionInfo>(info);
         }
         else
         {
             id = da.Insertar <UnidadMedicionInfo>(info);
         }
         return(id);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        ///     Obtiene una Unidad de Medicion
        /// </summary>
        /// <param name="unidadMedicionId"></param>
        /// <returns></returns>
        internal UnidadMedicionInfo ObtenerPorID(int unidadMedicionId)
        {
            UnidadMedicionInfo result = null;

            try
            {
                Logger.Info();
                Dictionary <string, object> parameters = AuxUnidadMedicionDAL.ObtenerParametroPorID(unidadMedicionId);
                DataSet ds = Retrieve("UnidadMedicion_ObtenerPorID", parameters);
                if (ValidateDataSet(ds))
                {
                    result = MapUnidadMedicionDAL.ObtenerPorID(ds);
                }
            }
            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);
            }
            return(result);
        }
Ejemplo n.º 4
0
        public void ObtenerUnidadMedicionPorId()
        {
            var unidadMedicionPL = new UnidadMedicionPL();
            UnidadMedicionInfo unidadMedicion = unidadMedicionPL.ObtenerPorID(1);

            Assert.IsNotNull(unidadMedicion);
            Assert.IsTrue(unidadMedicion.Descripcion.Length > 0);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Cambiar leyenda de Todos por Seleccione
        /// </summary>
        private void CambiarLeyendaCombo()
        {
            UnidadMedicionInfo unidadTodos =
                Contexto.UnidadesMedidcion.FirstOrDefault(desc => desc.Descripcion.Equals(Properties.Resources.cbo_Seleccionar));

            if (unidadTodos != null)
            {
                unidadTodos.Descripcion = Properties.Resources.cbo_Seleccione;
            }

            FamiliaInfo familiaTodos =
                Contexto.Familias.FirstOrDefault(desc => desc.Descripcion.Equals(Properties.Resources.cbo_Seleccionar));

            if (familiaTodos != null)
            {
                familiaTodos.Descripcion = Properties.Resources.cbo_Seleccione;
            }
        }
Ejemplo n.º 6
0
        private IList <PolizaInfo> ObtenerPoliza(List <PolizaEntradaSalidaPorAjusteModel> ajustesDeInventario)
        {
            var polizasSalidaAjuste = new List <PolizaInfo>();

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

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

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

            var linea = 1;
            var almacenMovimientoBL = new AlmacenMovimientoBL();
            List <AlmacenMovimientoDetalle> almancenMovimientosDetalle =
                ajustesDeInventario.Select(mov => new AlmacenMovimientoDetalle
            {
                AlmacenMovimientoDetalleID = mov.AlmacenMovimientoDetalleID
            }).ToList();
            AlmacenMovimientoInfo almacenMovimiento =
                almacenMovimientoBL.ObtenerMovimientoPorClaveDetalle(almancenMovimientosDetalle);

            if (almacenMovimiento == null)
            {
                almacenMovimiento = new AlmacenMovimientoInfo();
            }
            string      archivoFolio = ObtenerArchivoFolio(almacenMovimiento.FechaMovimiento);
            AlmacenInfo almacen      = ObtenerAlmacen(almacenMovimiento.AlmacenID);

            if (almacen == null)
            {
                almacen = new AlmacenInfo
                {
                    Organizacion = new OrganizacionInfo()
                };
            }
            OrganizacionInfo organizacion = ObtenerOrganizacionIVA(almacen.Organizacion.OrganizacionID);

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

            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(almacenMovimiento.FolioMovimiento);

            IList <CuentaSAPInfo>          cuentasSAP         = ObtenerCuentasSAP();
            IList <ClaseCostoProductoInfo> almacenesProductos = ObtenerCostosProducto(almacen.AlmacenID);

            ParametroOrganizacionInfo parametroOrganizacionSuperavit;

            if (almacen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.Enfermeria.GetHashCode() ||
                almacen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ManejoGanado.GetHashCode() ||
                almacen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ReimplanteGanado.GetHashCode())
            {
                parametroOrganizacionSuperavit =
                    ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID,
                                                         ParametrosEnum.CTASUPERAVITENG.ToString());
            }
            else
            {
                parametroOrganizacionSuperavit =
                    ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID, ParametrosEnum.CTASUPERAVIT.ToString());
            }
            if (parametroOrganizacionSuperavit == null)
            {
                throw new ExcepcionServicio(string.Format("{0}", "CUENTA DE SUPERAVIT NO CONFIGURADA"));
            }

            IList <ProductoInfo>                productos           = ObtenerProductos();
            IList <UnidadMedicionInfo>          unidades            = ObtenerUnidadesMedicion();
            IList <CuentaAlmacenSubFamiliaInfo> almacenesSubFamilia = ObtenerCostosSubFamilia(almacen.AlmacenID);
            ProductoInfo producto;
            PolizaEntradaSalidaPorAjusteModel ajuste;
            ClaseCostoProductoInfo            almacenProducto;
            CuentaSAPInfo cuentaSAP;
            CuentaAlmacenSubFamiliaInfo almacenSubFamilia;
            ParametroOrganizacionInfo   parametroCentroCosto =
                ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID,
                                                     ParametrosEnum.CTACENTROCOSTOMP.ToString());

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

            for (var indexAjustes = 0; indexAjustes < ajustesDeInventario.Count; indexAjustes++)
            {
                ajuste    = ajustesDeInventario[indexAjustes];
                cuentaSAP = null;

                producto    = productos.FirstOrDefault(clave => clave.ProductoId == ajuste.ProductoID);
                afectaCosto = ValidarAfectacionCuentaCosto(producto);
                if (!afectaCosto && (almacen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.Enfermeria.GetHashCode() ||
                                     almacen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ManejoGanado.GetHashCode() ||
                                     almacen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ReimplanteGanado.GetHashCode()))
                {
                    almacenSubFamilia =
                        almacenesSubFamilia.FirstOrDefault(sub => sub.SubFamiliaID == producto.SubfamiliaId);
                    if (almacenSubFamilia != null)
                    {
                        cuentaSAP =
                            cuentasSAP.FirstOrDefault(cuenta => cuenta.CuentaSAPID == almacenSubFamilia.CuentaSAPID);
                    }
                }
                else
                {
                    almacenProducto =
                        almacenesProductos.FirstOrDefault(prod => prod.ProductoID == producto.ProductoId);
                    if (almacenProducto != null)
                    {
                        cuentaSAP =
                            cuentasSAP.FirstOrDefault(cuenta => cuenta.CuentaSAPID == almacenProducto.CuentaSAPID);
                    }
                }
                if (cuentaSAP == null)
                {
                    throw new ExcepcionServicio(string.Format("{0} {1} {2}", "CUENTA PARA PRODUCTO",
                                                              producto.ProductoDescripcion, "NO CONFIGURADA"));
                }
                UnidadMedicionInfo unidad = unidades.FirstOrDefault(uni => uni.UnidadID == producto.UnidadId);
                if (unidad == null)
                {
                    unidad = new UnidadMedicionInfo();
                }
                var datos = new DatosPolizaInfo
                {
                    NumeroReferencia = numeroReferencia,
                    FechaEntrada     = almacenMovimiento.FechaMovimiento,
                    Folio            = almacenMovimiento.FolioMovimiento.ToString(),
                    ClaseDocumento   = postFijoRef3,
                    Importe          = string.Format("{0}", ajuste.Importe.ToString("F2")),
                    Renglon          = Convert.ToString(linea++),
                    ImporteIva       = "0",
                    Ref3             = ref3.ToString(),
                    Cuenta           = cuentaSAP.CuentaSAP,
                    Division         = organizacion.Division,
                    ArchivoFolio     = archivoFolio,
                    DescripcionCosto = cuentaSAP.Descripcion,
                    CentroCosto      =
                        cuentaSAP.CuentaSAP.StartsWith(PrefijoCuentaCentroCosto) ||
                        cuentaSAP.CuentaSAP.StartsWith(PrefijoCuentaCentroGasto)
                                            ? parametroCentroCosto.Valor
                                            : string.Empty,
                    PesoOrigen    = Math.Round(ajuste.Cantidad, 0),
                    TipoDocumento = textoDocumento,
                    Concepto      = String.Format("{0}-{1} {2} {3} {4}",
                                                  tipoMovimiento,
                                                  almacenMovimiento.FolioMovimiento,
                                                  producto.ProductoDescripcion,
                                                  string.Format("{0} {1}", ajuste.Cantidad.ToString("N2"),
                                                                unidad.ClaveUnidad),
                                                  ajuste.Precio.ToString("C2")),
                    Sociedad = organizacion.Sociedad,
                    Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                };
                PolizaInfo polizaSalida = GeneraRegistroPoliza(datos);
                polizasSalidaAjuste.Add(polizaSalida);

                datos = new DatosPolizaInfo
                {
                    NumeroReferencia = numeroReferencia,
                    FechaEntrada     = almacenMovimiento.FechaMovimiento,
                    Folio            = almacenMovimiento.FolioMovimiento.ToString(),
                    Importe          = string.Format("{0}", (ajuste.Importe * -1).ToString("F2")),
                    Renglon          = Convert.ToString(linea++),
                    ImporteIva       = "0",
                    Ref3             = ref3.ToString(),
                    Cuenta           = parametroOrganizacionSuperavit.Valor,
                    CentroCosto      =
                        parametroOrganizacionSuperavit.Valor.StartsWith(PrefijoCuentaCentroCosto) ||
                        parametroOrganizacionSuperavit.Valor.StartsWith(PrefijoCuentaCentroGasto)
                                        ? parametroCentroCosto.Valor
                                        : string.Empty,
                    Division         = organizacion.Division,
                    ArchivoFolio     = archivoFolio,
                    DescripcionCosto = cuentaSAP.Descripcion,
                    PesoOrigen       = Math.Round(ajuste.Cantidad, 0),
                    TipoDocumento    = textoDocumento,
                    ClaseDocumento   = postFijoRef3,
                    Concepto         = String.Format("{0}-{1} {2} {3} {4}",
                                                     tipoMovimiento,
                                                     almacenMovimiento.FolioMovimiento,
                                                     producto.ProductoDescripcion,
                                                     string.Format("{0} {1}", ajuste.Cantidad.ToString("N2"), unidad.ClaveUnidad),
                                                     ajuste.Precio.ToString("C2")),
                    Sociedad = organizacion.Sociedad,
                    Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                };
                polizaSalida = GeneraRegistroPoliza(datos);
                polizasSalidaAjuste.Add(polizaSalida);
            }

            return(polizasSalidaAjuste);
        }
Ejemplo n.º 7
0
        /// <summary>
        ///     Obtiene un lista paginada
        /// </summary>
        /// <param name="pagina"></param>
        /// <param name="filtro"></param>
        /// <returns></returns>
        public ResultadoInfo <UnidadMedicionInfo> ObtenerPorPagina(PaginacionInfo pagina, UnidadMedicionInfo filtro)
        {
            ResultadoInfo <UnidadMedicionInfo> resultado;

            try
            {
                Logger.Info();
                var unidadMedicionBL = new UnidadMedicionBL();
                resultado = unidadMedicionBL.ObtenerPorPagina(pagina, filtro);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(resultado);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Obtiene una lista paginada de UnidadMedicion
        /// </summary>
        /// <param name="pagina"></param>
        /// <param name="filtro"></param>
        /// <returns></returns>
        public ResultadoInfo <UnidadMedicionInfo> ObtenerPorPagina(PaginacionInfo pagina, UnidadMedicionInfo filtro)
        {
            try
            {
                Logger.Info();
                var result    = new ResultadoInfo <UnidadMedicionInfo>();
                var condicion = da.Tabla <UnidadMedicionInfo>().Where(e => e.Activo == filtro.Activo);
                if (filtro.UnidadID > 0)
                {
                    condicion = condicion.Where(e => e.UnidadID == filtro.UnidadID);
                }
                if (!string.IsNullOrEmpty(filtro.Descripcion))
                {
                    condicion = condicion.Where(e => e.Descripcion.Contains(filtro.Descripcion));
                }
                result.TotalRegistros = condicion.Count();

                int inicio = pagina.Inicio;
                int limite = pagina.Limite;
                if (inicio > 1)
                {
                    int limiteReal = (limite - inicio) + 1;
                    inicio = (limite / limiteReal);
                    limite = limiteReal;
                }
                var paginado = condicion
                               .OrderBy(e => e.Descripcion)
                               .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);
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Genera diccionario con los parametros
        /// necesiarios para la ejecucion del procedimiento
        /// que obtiene Unidad de Medicion Paginada
        /// </summary>
        /// <param name="pagina"></param>
        /// <param name="filtro"></param>
        /// <returns></returns>
        internal static Dictionary <string, object> ObtenerParametrosPorPagina(PaginacionInfo pagina, UnidadMedicionInfo filtro)
        {
            Dictionary <string, object> parametros;

            try
            {
                Logger.Info();
                parametros = new Dictionary <string, object>
                {
                    { "@Descripcion", filtro.Descripcion },
                    { "@ClaveUnidad", filtro.ClaveUnidad },
                    { "@Activo", filtro.Activo },
                    { "@Inicio", pagina.Inicio },
                    { "@Limite", pagina.Limite }
                };
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(parametros);
        }
        private IList <PolizaInfo> ObtenerPoliza(PolizaContratoModel datosContrato)
        {
            var polizasContrato = new List <PolizaInfo>();

            int      folioPedido    = datosContrato.Contrato.Folio;
            int      organizacionID = datosContrato.Contrato.Organizacion.OrganizacionID;
            DateTime fechaPedido    = datosContrato.Contrato.Fecha;

            int    miliSegunda  = DateTime.Now.Millisecond;
            string archivoFolio = ObtenerArchivoFolio(fechaPedido);

            OrganizacionInfo organizacion = ObtenerOrganizacionIVA(organizacionID);

            var tipoContrato   = (TipoContratoEnum)datosContrato.Contrato.TipoContrato.TipoContratoId;
            var tipoPolizaEnum = TipoPoliza.PolizaContratoTerceros;

            switch (tipoContrato)
            {
            case TipoContratoEnum.EnTransito:
                tipoPolizaEnum = TipoPoliza.PolizaContratoTransito;
                break;
            }
            TipoPolizaInfo tipoPoliza =
                TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == tipoPolizaEnum.GetHashCode());

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

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

            var ref3 = new StringBuilder();

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

            //string numeroDocumento = ObtenerNumeroReferencia;
            string numeroDocumento = ObtenerNumeroReferenciaFolio(datosContrato.AlmacenMovimiento.FolioMovimiento);

            var proveedorAlmacenBL = new ProveedorAlmacenBL();
            ProveedorAlmacenInfo proveedorAlmacen =
                proveedorAlmacenBL.ObtenerPorProveedorId(datosContrato.Contrato.Proveedor);

            var          productos = ObtenerProductos();
            var          unidades  = ObtenerUnidadesMedicion();
            ProductoInfo producto  =
                productos.FirstOrDefault(pro => pro.ProductoId == datosContrato.Contrato.Producto.ProductoId);

            if (producto == null)
            {
                producto = new ProductoInfo();
            }
            UnidadMedicionInfo unidadProducto = unidades.FirstOrDefault(uni => uni.UnidadID == producto.UnidadId);

            if (unidadProducto == null)
            {
                unidadProducto = new UnidadMedicionInfo();
            }

            if (proveedorAlmacen == null)
            {
                throw new ExcepcionServicio(string.Format("EL PROVEEDOR {0} NO TIENE ALMACEN ASIGNADO",
                                                          datosContrato.Contrato.Proveedor.Descripcion));
            }
            decimal importe = Math.Round(datosContrato.ContratoParcial.Importe, 4) * datosContrato.ContratoParcial.Cantidad;
            var     renglon = 1;
            var     datos   = new DatosPolizaInfo
            {
                NumeroReferencia = numeroDocumento,
                FechaEntrada     = datosContrato.Contrato.Fecha,
                Folio            = datosContrato.Contrato.Folio.ToString(),
                Importe          =
                    string.Format("{0}", importe.ToString("F2")),
                Renglon          = Convert.ToString(renglon),
                ImporteIva       = "0",
                Ref3             = ref3.ToString(),
                Cuenta           = datosContrato.Contrato.Cuenta.CuentaSAP,
                ArchivoFolio     = archivoFolio,
                DescripcionCosto = datosContrato.Contrato.Cuenta.Descripcion,
                PesoOrigen       = Math.Round(Convert.ToDecimal(datosContrato.ContratoParcial.Cantidad), 0),
                Division         = organizacion.Division,
                TipoDocumento    = textoDocumento,
                ClaseDocumento   = postFijoRef3,
                Concepto         = String.Format("{0}-{1} {2} {3} {4} ${5} ${6} {7}",
                                                 tipoMovimiento,
                                                 datosContrato.Contrato.Folio,
                                                 datosContrato.ContratoParcial.Cantidad.ToString("N2"),
                                                 unidadProducto.ClaveUnidad, datosContrato.Contrato.Producto.Descripcion,
                                                 importe.ToString("N2"), datosContrato.ContratoParcial.Importe.ToString("N4"), postFijoRef3),
                Sociedad = organizacion.Sociedad,
                Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
            };
            PolizaInfo poliza = GeneraRegistroPoliza(datos);

            polizasContrato.Add(poliza);

            renglon++;
            datos = new DatosPolizaInfo
            {
                NumeroReferencia = numeroDocumento,
                FechaEntrada     = datosContrato.Contrato.Fecha,
                Folio            = datosContrato.Contrato.Folio.ToString(),
                ClaveProveedor   = datosContrato.Contrato.Proveedor.CodigoSAP,
                Importe          =
                    string.Format("{0}", (importe * -1).ToString("F2")),
                Renglon          = Convert.ToString(renglon),
                Division         = organizacion.Division,
                ImporteIva       = "0",
                Ref3             = ref3.ToString(),
                ArchivoFolio     = archivoFolio,
                DescripcionCosto = datosContrato.Contrato.Proveedor.Descripcion,
                PesoOrigen       = Math.Round(Convert.ToDecimal(datosContrato.Contrato.Cantidad), 0),
                TipoDocumento    = textoDocumento,
                ClaseDocumento   = postFijoRef3,
                Concepto         = String.Format("{0}-{1} {2} {3} {4} ${5} ${6} {7}",
                                                 tipoMovimiento,
                                                 datosContrato.Contrato.Folio,
                                                 datosContrato.ContratoParcial.Cantidad.ToString("N2"),
                                                 unidadProducto.ClaveUnidad, datosContrato.Contrato.Producto.Descripcion,
                                                 importe.ToString("N2"), datosContrato.ContratoParcial.Importe.ToString("N4"), postFijoRef3),
                Sociedad = organizacion.Sociedad,
                Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
            };
            poliza = GeneraRegistroPoliza(datos);
            polizasContrato.Add(poliza);

            return(polizasContrato);
        }
Ejemplo n.º 11
0
        private IList <PolizaInfo> ObtenerPolizas(RecepcionProductoInfo recepcionProducto)
        {
            var polizaCompraMateriaPrima = new List <PolizaInfo>();

            int organizacionID            = recepcionProducto.Almacen.Organizacion.OrganizacionID;
            OrganizacionInfo organizacion = ObtenerOrganizacionIVA(organizacionID);

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

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

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

            string postFijoRef3 = tipoPoliza.PostFijoRef3;

            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 numeroDocumento = ObtenerNumeroReferencia;

            IList <CuentaSAPInfo> cuentasSAP = ObtenerCuentasSAP();
            int almacenID = recepcionProducto.Almacen.AlmacenID;
            IList <ClaseCostoProductoInfo> almacenesProductos = ObtenerCostosProducto(almacenID);
            IList <UnidadMedicionInfo>     unidadesMedicion   = ObtenerUnidadesMedicion();

            var    linea          = 1;
            string textoDocumento = tipoPoliza.TextoDocumento;
            string tipoMovimiento = tipoPoliza.ClavePoliza;

            DateTime fecha        = recepcionProducto.FechaRecepcion;
            string   archivoFolio = ObtenerArchivoFolio(fecha);
            int      folio        = recepcionProducto.FolioRecepcion;

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

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

            IList <RecepcionProductoDetalleInfo> detallesProducto = recepcionProducto.ListaRecepcionProductoDetalle;
            RecepcionProductoDetalleInfo         detalle;
            DatosPolizaInfo        datos;
            PolizaInfo             polizaSalida;
            CuentaSAPInfo          cuentaSAP;
            ClaseCostoProductoInfo almacenProducto;
            CuentaSAPInfo          cuentaIva;
            UnidadMedicionInfo     unidadMedicion = null;

            for (int indexDetalle = 0; indexDetalle < detallesProducto.Count; indexDetalle++)
            {
                detalle         = detallesProducto[indexDetalle];
                almacenProducto =
                    almacenesProductos.FirstOrDefault(prod => prod.ProductoID == detalle.Producto.ProductoId);
                if (almacenProducto == null)
                {
                    throw new ExcepcionServicio(string.Format("{0} {1} {2}", "CUENTA PARA PRODUCTO",
                                                              detalle.Producto.Descripcion, "NO CONFIGURADA"));
                }
                cuentaSAP =
                    cuentasSAP.FirstOrDefault(cuenta => cuenta.CuentaSAPID == almacenProducto.CuentaSAPID);
                if (cuentaSAP == null)
                {
                    throw new ExcepcionServicio(string.Format("{0} {1} {2}", "CUENTA PARA PRODUCTO",
                                                              detalle.Producto.Descripcion, "NO CONFIGURADA"));
                }
                unidadMedicion =
                    unidadesMedicion.FirstOrDefault(clave => clave.UnidadID == detalle.Producto.UnidadMedicion.UnidadID);
                datos = new DatosPolizaInfo
                {
                    NumeroReferencia  = numeroDocumento,
                    FechaEntrada      = fecha,
                    Folio             = folio.ToString(),
                    ClaseDocumento    = postFijoRef3,
                    Importe           = string.Format("{0}", detalle.Importe.ToString("F2")),
                    IndicadorImpuesto = String.Empty,
                    Renglon           = Convert.ToString(linea++),
                    ImporteIva        = "0",
                    Ref3             = ref3.ToString(),
                    Division         = organizacion.Division,
                    ArchivoFolio     = archivoFolio,
                    Cuenta           = cuentaSAP.CuentaSAP,
                    DescripcionCosto = cuentaSAP.Descripcion,
                    CentroCosto      =
                        cuentaSAP.CuentaSAP.StartsWith(PrefijoCuentaCentroCosto)
                                        ? parametroCentroCosto.Valor
                                        : string.Empty,
                    PesoOrigen    = Math.Round(detalle.Cantidad, 0),
                    TipoDocumento = textoDocumento,
                    Concepto      = String.Format("{0}-{1} {2} {3} {4} {5}",
                                                  tipoMovimiento,
                                                  folio, detalle.Cantidad.ToString("N0")
                                                  , unidadMedicion.ClaveUnidad
                                                  , detalle.Producto.Descripcion, postFijoRef3),
                    Sociedad = organizacion.Sociedad,
                    Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                };
                polizaSalida = GeneraRegistroPoliza(datos);
                polizaCompraMateriaPrima.Add(polizaSalida);
            }
            cuentaIva = cuentasSAP.FirstOrDefault(
                clave => clave.CuentaSAP.Equals(organizacion.Iva.CuentaRecuperar.ClaveCuenta));
            if (cuentaIva == null)
            {
                throw new ExcepcionServicio(string.Format("{0} {1}", "NO EXISTE CONFIGURACIONES PARA LA CUENTA",
                                                          organizacion.Iva.Descripcion));
            }
            ParametroGeneralInfo parametroGeneralProductos =
                ObtenerParametroGeneralPorClave(ParametrosEnum.PRODIVAALM.ToString());
            List <int> productosGeneranIVA =
                parametroGeneralProductos.Valor.Split('|').Select(x => Convert.ToInt32(x)).ToList();
            var medicamentosConIva = productosGeneranIVA.Select(x => new RecepcionProductoDetalleInfo
            {
                Producto = new ProductoInfo
                {
                    ProductoId =
                        x
                }
            }).ToList();
            decimal importe =
                detallesProducto.Where(fam => fam.Producto.Familia.FamiliaID != FamiliasEnum.Medicamento.GetHashCode()).
                Sum(imp => imp.Importe);
            decimal importeMedicamentosIva = (from det in detallesProducto
                                              join med in medicamentosConIva on det.Producto.ProductoId equals
                                              med.Producto.ProductoId
                                              select det.Importe).Sum();

            importe = importe + importeMedicamentosIva;
            decimal importeIva = importe * (organizacion.Iva.TasaIva / 100);

            importe = importe + importeIva;
            decimal cantidad =
                detallesProducto.Where(fam => fam.Producto.Familia.FamiliaID != FamiliasEnum.Medicamento.GetHashCode()).
                Intersect(medicamentosConIva).
                Sum(kgs => kgs.Cantidad);
            decimal cantidadMedicamentosIva = (from det in detallesProducto
                                               join med in medicamentosConIva on det.Producto.ProductoId equals
                                               med.Producto.ProductoId
                                               select det.Cantidad).Sum();

            cantidad += cantidadMedicamentosIva;
            if (importe > 0)
            {
                datos = new DatosPolizaInfo
                {
                    NumeroReferencia  = numeroDocumento,
                    FechaEntrada      = fecha,
                    Folio             = folio.ToString(),
                    ClaseDocumento    = postFijoRef3,
                    Importe           = string.Format("{0}", importeIva.ToString("F2")),
                    IndicadorImpuesto = organizacion.Iva.IndicadorIvaRecuperar,
                    Division          = organizacion.Division,
                    Renglon           = Convert.ToString(linea++),
                    ImporteIva        = importe.ToString("F2"),
                    Ref3              = ref3.ToString(),
                    ArchivoFolio      = archivoFolio,
                    Cuenta            = cuentaIva.CuentaSAP,
                    DescripcionCosto  = cuentaIva.Descripcion,
                    PesoOrigen        = Math.Round(cantidad, 0),
                    TipoDocumento     = textoDocumento,
                    ClaveImpuesto     = ClaveImpuesto,
                    CondicionImpuesto = CondicionImpuesto,
                    Concepto          = String.Format("{0}-{1} {2} {3} {4}",
                                                      tipoMovimiento,
                                                      folio, cantidad.ToString("N0")
                                                      , unidadMedicion.ClaveUnidad
                                                      , postFijoRef3),
                    Sociedad = organizacion.Sociedad,
                    Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                };
                polizaSalida = GeneraRegistroPoliza(datos);
                polizaCompraMateriaPrima.Add(polizaSalida);
            }
            importe  = detallesProducto.Sum(imp => imp.Importe);
            cantidad = detallesProducto.Sum(kgs => kgs.Cantidad);
            datos    = new DatosPolizaInfo
            {
                NumeroReferencia  = numeroDocumento,
                FechaEntrada      = fecha,
                Folio             = folio.ToString(),
                ClaveProveedor    = recepcionProducto.Proveedor.CodigoSAP,
                ClaseDocumento    = postFijoRef3,
                Importe           = string.Format("{0}", ((importe + importeIva) * -1).ToString("F2")),
                IndicadorImpuesto = String.Empty,
                Renglon           = Convert.ToString(linea),
                ImporteIva        = "0",
                Ref3             = ref3.ToString(),
                Division         = organizacion.Division,
                ArchivoFolio     = archivoFolio,
                DescripcionCosto = recepcionProducto.Proveedor.Descripcion,
                PesoOrigen       = Math.Round(cantidad, 0),
                TipoDocumento    = textoDocumento,
                Concepto         = String.Format("{0}-{1} {2} {3} {4}",
                                                 tipoMovimiento,
                                                 folio, cantidad.ToString("N0"),
                                                 unidadMedicion.ClaveUnidad, postFijoRef3),
                Sociedad = organizacion.Sociedad,
                Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
            };
            polizaSalida = GeneraRegistroPoliza(datos);
            polizaCompraMateriaPrima.Add(polizaSalida);

            return(polizaCompraMateriaPrima);
        }
Ejemplo n.º 12
0
        /// <summary>
        ///     Obtiene un lista paginada de usuario por el filtro especificado
        /// </summary>
        /// <param name="pagina"></param>
        /// <param name="filtro"></param>
        /// <returns></returns>
        internal ResultadoInfo <UnidadMedicionInfo> ObtenerPorPagina(PaginacionInfo pagina, UnidadMedicionInfo filtro)
        {
            ResultadoInfo <UnidadMedicionInfo> unidadMedicionLista = null;

            try
            {
                Dictionary <string, object> parameters = AuxUnidadMedicionDAL.ObtenerParametrosPorPagina(pagina, filtro);
                DataSet ds = Retrieve("UnidadMedicion_ObtenerPorPagina", parameters);
                if (ValidateDataSet(ds))
                {
                    unidadMedicionLista = MapUnidadMedicionDAL.ObtenerPorPagina(ds);
                }
            }
            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);
            }
            return(unidadMedicionLista);
        }