private void LLenarComboDivision(bool nuevo)
        {
            if (nuevo)
            {
                var organizacionPL = new OrganizacionPL();
                var listDivision   = organizacionPL.ObtenerTipoGanaderas();

                if (listDivision != null && listDivision.Any())
                {
                    AgregarElementoInicialDivision(listDivision);
                    Contexto.ListDivision = listDivision;
                }
            }
            else
            {
                var list = new OrganizacionInfo {
                    OrganizacionID = Contexto.Division.OrganizacionID, Descripcion = Contexto.Division.Descripcion
                };
                Contexto.ListDivision.Insert(0, list);
                cboDivision.SelectedIndex = 0;
            }
        }
Example #2
0
        /// <summary>
        /// Obtiene todos los almacenes por los tipo de almacen y organizacion.
        /// </summary>
        /// <param name="tiposAlmacen"></param>
        /// <param name="organizacion"></param>
        /// <returns></returns>
        public List <AlmacenInfo> ObtenerAlmacenPorTiposAlmacen(List <TipoAlmacenEnum> tiposAlmacen,
                                                                OrganizacionInfo organizacion)
        {
            List <AlmacenInfo> almacenes = null;

            try
            {
                if (tiposAlmacen != null && tiposAlmacen.Count > 0)
                {
                    Logger.Info();
                    var almacenBl = new AlmacenBL();
                    almacenes = almacenBl.ObtenerAlmacenPorTiposAlmacen(tiposAlmacen, organizacion);
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }

            return(almacenes);
        }
Example #3
0
 /// <summary>
 /// Obtiene la lista de premezclas por organizacion
 /// </summary>
 /// <param name="organizacion"></param>
 /// <returns></returns>
 internal List <PremezclaInfo> ObtenerPorOrganizacion(OrganizacionInfo organizacion)
 {
     try
     {
         List <PremezclaInfo> result = null;
         try
         {
             Logger.Info();
             Dictionary <string, object> parametros =
                 AuxPremezclaDAL.ObtenerParametrosPorOrganizacion(organizacion);
             DataSet ds = Retrieve("Premezcla_ObtenerPorOrganizacionID", parametros);
             if (ValidateDataSet(ds))
             {
                 result = MapPremezclaDAL.ObtenerTodos(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);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
     }
     return(null);
 }
Example #4
0
        /// <summary>
        ///     Obtiene un lista paginada de organizaciones
        /// </summary>
        /// <param name="filtro"></param>
        /// <param name="dependencias"> </param>
        /// <returns></returns>
        public OrganizacionInfo ObtenerPorDependenciasOrigenID(OrganizacionInfo filtro
                                                               , IList <IDictionary <IList <String>, Object> > dependencias)
        {
            OrganizacionInfo resultadoOrganizacion;

            try
            {
                Logger.Info();
                var organizacionBL = new OrganizacionBL();
                resultadoOrganizacion = organizacionBL.ObtenerPorDependenciasOrigenID(filtro, dependencias);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(resultadoOrganizacion);
        }
Example #5
0
        internal static Dictionary <string, object> ObtenerParametrosPorTipoOrigen(OrganizacionInfo filtro, IList <IDictionary <IList <string>, object> > dependencias)
        {
            Dictionary <string, object> parametros;

            try
            {
                Logger.Info();
                parametros =
                    new Dictionary <string, object>
                {
                    { "@OrganizacionID", filtro.OrganizacionID }
                };

                AuxDAL.ObtenerDependencias(parametros, dependencias);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(parametros);
        }
Example #6
0
 /// <summary>
 ///     Metodo que actualiza un Organizacion
 /// </summary>
 /// <param name="info"></param>
 internal void Actualizar(OrganizacionInfo info)
 {
     try
     {
         Dictionary <string, object> parameters = AuxOrganizacionDAL.ObtenerParametrosActualizar(info);
         Update("[dbo].[Organizacion_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);
     }
 }
Example #7
0
        public ResultadoInfo <OrganizacionInfo> ObtenerPorDependencia(PaginacionInfo pagina
                                                                      , OrganizacionInfo organizacionInfo
                                                                      , IList <IDictionary <IList <string>, object> > dependencias)
        {
            ResultadoInfo <OrganizacionInfo> resultadoOrganizacion;

            try
            {
                Logger.Info();
                var organizacionBL = new OrganizacionBL();
                resultadoOrganizacion = organizacionBL.ObtenerPorDependencias(pagina, organizacionInfo, dependencias);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(resultadoOrganizacion);
        }
        /// <summary>
        /// Obtener la ayuda de seleccion de organizacion
        /// </summary>
        private void AgregarAyudaOrganizacion(StackPanel stackPanel)
        {
            try
            {
                var organizacionInfo = new OrganizacionInfo
                {
                    Activo = EstatusEnum.Activo
                };

                skAyudaOrganizacion = new SKAyuda <OrganizacionInfo>(200, false, organizacionInfo
                                                                     , "PropiedadClaveCatalogoParametroOrganizacion"
                                                                     , "PropiedadDescripcionCatalogoParametroOrganizacion",
                                                                     "", false, 50, 9, true)
                {
                    AyudaPL = new OrganizacionPL(),
                    MensajeClaveInexistente = Properties.Resources.ReporteBitacoraLlegada_AyudaOrganizacionClaveInexistente,
                    MensajeBusquedaCerrar   = Properties.Resources.ReporteBitacoraLlegada_AyudaOrganizacionSalirSinSeleccionar,
                    MensajeBusqueda         = Properties.Resources.ReporteBitacoraLlegada_AyudaOrganizacionMensajeBusqueda,
                    MensajeAgregar          = Properties.Resources.ReporteBitacoraLlegada_AyudaOrganizacionMensajeAgregar,
                    TituloEtiqueta          = Properties.Resources.ReporteBitacoraLlegada_AyudaOrganizacionTituloEtiqueta,
                    TituloPantalla          = Properties.Resources.ReporteBitacoraLlegada_AyudaOrganizacionTituloPantalla
                };

                skAyudaOrganizacion.ObtenerDatos += ObtenerDatosOrganizacion;
                skAyudaOrganizacion.LlamadaMetodosNoExistenDatos += LimpiarOrganizacion;

                skAyudaOrganizacion.AsignaTabIndex(0);
                stackPanel.Children.Clear();
                stackPanel.Children.Add(skAyudaOrganizacion);
                skAyudaOrganizacion.TabIndex = 0;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
        }
        /// <summary>
        /// Asigna los costos de los subproductos al costo
        /// ya generado
        /// </summary>
        /// <param name="lista"></param>
        /// <param name="productoId"></param>
        /// <param name="organizacionID"> </param>
        private void AsignarCostosSubProductos(List <ReporteInventarioMateriaPrimaInfo> lista, int productoId, int organizacionID)
        {
            var productoBL = new ProductoBL();
            var producto   = new ProductoInfo
            {
                ProductoId = productoId
            };

            producto = productoBL.ObtenerPorID(producto);
            if (producto != null)
            {
                switch ((FamiliasEnum)producto.Familia.FamiliaID)
                {
                case FamiliasEnum.Premezclas:
                    var organizacion = new OrganizacionInfo
                    {
                        OrganizacionID = organizacionID,
                        Activo         = EstatusEnum.Activo
                    };
                    var almacenBL    = new AlmacenBL();
                    var tiposAlmacen = new List <TipoAlmacenEnum> {
                        TipoAlmacenEnum.MateriasPrimas
                    };
                    List <AlmacenInfo> almacenes = almacenBL.ObtenerAlmacenPorTiposAlmacen(tiposAlmacen,
                                                                                           organizacion);
                    var almacenMovimientoBL = new AlmacenMovimientoBL();
                    IEnumerable <AlmacenMovimientoSubProductosModel> productosPremezcla =
                        lista.Select(x => new AlmacenMovimientoSubProductosModel
                    {
                        FechaMovimiento =
                            x.FechaMovimiento,
                        ProductoID = productoId
                    });
                    productosPremezcla = almacenMovimientoBL.ObtenerMovimientosSubProductos(productosPremezcla);
                    if (productosPremezcla != null)
                    {
                        var premezclaDetalleBL          = new PremezclaBL();
                        List <PremezclaInfo> premezclas =
                            premezclaDetalleBL.ObtenerPorOrganizacionDetalle(organizacion);
                        PremezclaInfo premezcla;

                        List <ReporteInventarioMateriaPrimaInfo> entradasMateriaPrima =
                            lista.Where(entrada => entrada.CostoId > 0).ToList();
                        if (entradasMateriaPrima != null)
                        {
                            ReporteInventarioMateriaPrimaInfo entradaMateriaPrima;
                            for (var index = 0; index < entradasMateriaPrima.Count; index++)
                            {
                                premezcla =
                                    premezclas.FirstOrDefault(
                                        id => id.Producto.ProductoId == productoId);
                                if (premezcla != null)
                                {
                                    entradaMateriaPrima = entradasMateriaPrima[index];
                                    int almacenID =
                                        productosPremezcla.Where(
                                            almMov =>
                                            almMov.AlmacenMovimientoID == entradaMateriaPrima.AlmacenMovimientoID).
                                        Select(id => id.AlmacenID).FirstOrDefault();
                                    if (almacenes.Any(id => id.AlmacenID == almacenID))
                                    {
                                        AlmacenMovimientoSubProductosModel almacenMovimientoSubProductosModel =
                                            productosPremezcla.FirstOrDefault(
                                                prod => prod.ProductoID == premezcla.Producto.ProductoId &&
                                                prod.FechaMovimiento.ToShortDateString().Equals(
                                                    entradaMateriaPrima.FechaMovimiento.ToShortDateString()));
                                        if (almacenMovimientoSubProductosModel != null)
                                        {
                                            IEnumerable <AlmacenMovimientoSubProductosModel> subProductos = productosPremezcla
                                                                                                            .Join(premezcla.ListaPremezclaDetalleInfos,
                                                                                                                  pp => pp.ProductoID, pd => pd.Producto.ProductoId,
                                                                                                                  (pp, pd) => pp).Where(
                                                fechaInicio =>
                                                fechaInicio.AlmacenMovimientoID ==
                                                (almacenMovimientoSubProductosModel.AlmacenMovimientoID +
                                                 1) &&
                                                fechaInicio.FechaMovimiento.ToShortDateString().Equals(
                                                    entradaMateriaPrima.FechaMovimiento.ToShortDateString()));
                                            if (subProductos != null && subProductos.Any())
                                            {
                                                entradaMateriaPrima.ImporteSubProductos =
                                                    subProductos.Sum(imp => imp.Importe);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    break;
                }
            }
        }
Example #10
0
        internal static Dictionary <string, object> ObtenerParametrosGuardarConsumoAlimento(List <AlmacenInventarioInfo> listaActualizadaProductos, OrganizacionInfo organizacion)
        {
            Dictionary <string, object> parametros;

            try
            {
                Logger.Info();
                var xml =
                    new XElement("ROOT",
                                 from detalle in listaActualizadaProductos
                                 select new XElement("AlmacenInventario",
                                                     new XElement("OrganizacionID", organizacion.OrganizacionID),
                                                     new XElement("AlmacenID", detalle.AlmacenID),
                                                     new XElement("ProductoID", detalle.ProductoID),
                                                     new XElement("Cantidad", detalle.Cantidad),
                                                     new XElement("Importe", detalle.Importe),
                                                     new XElement("UsuarioCreacionID", organizacion.UsuarioCreacionID)
                                                     ));
                parametros = new Dictionary <string, object>
                {
                    { "@XmlAlmacenInventario", xml.ToString() }
                };
                return(parametros);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
Example #11
0
        /// <summary>
        /// Constructor por default de la pantalla
        /// </summary>
        public EnvioDeAlimento()
        {
            try
            {
                InitializeComponent();

                InicializaContexto();
                _envioAlimentoPL          = new EnvioAlimentoPL();
                _tiposOrganizacionDestino = new List <TipoOrganizacionInfo>();
                _tiposOrganizacionDestino = new TipoOrganizacionPL().ObtenerTodos().Where(
                    tipo => tipo.TipoOrganizacionID != TipoOrganizacion.Ganadera.GetHashCode()).Where(
                    tipo2 => tipo2.TipoOrganizacionID != TipoOrganizacion.Corporativo.GetHashCode()).ToList();
                if (_tiposOrganizacionDestino != null)
                {
                    EnvioAlimento.Destino.ListaTiposOrganizacion = _tiposOrganizacionDestino;
                }
                EnvioAlimento.Destino.Activo = EstatusEnum.Activo;

                //
                this.skAyudaProducto.ObjetoNegocio  = new ProductoPL();
                this.skAyudaProducto.AyudaConDatos += (sender2, args) =>
                {
                    try
                    {
                        if (EnvioAlimento.Producto != null)
                        {
                            EnvioAlimento.Producto.SubfamiliaId = int.Parse(cmbSubFamilia.SelectedValue.ToString());
                            if (EnvioAlimento.Producto.ProductoId == 0)
                            {
                                cmbAlmacen.ItemsSource = new List <AlmacenInfo>();
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.Error(ex);
                        SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.Tratamiento_ErrorInicial, MessageBoxButton.OK, MessageImage.Error);
                    }
                };

                this.skAyudaProducto.AyudaLimpia += skAyudaProducto_AyudaLimpia;


                this.skAyudaDestino.txtClave.Focus();
                skAyudaDestino.AyudaLimpia   += skAyudaDestino_AyudaLimpia;
                skAyudaDestino.ObjetoNegocio  = new OrganizacionPL();
                skAyudaDestino.AyudaConDatos += (o, args) =>
                {
                    try
                    {
                        if (_tiposOrganizacionDestino != null)
                        {
                            EnvioAlimento.Destino.ListaTiposOrganizacion = this._tiposOrganizacionDestino;
                        }
                        OrganizacionInfo destino = (OrganizacionInfo)skAyudaDestino.DataContext;
                        if (destino.Activo == EstatusEnum.Inactivo)
                        {
                            EnvioAlimento.Destino = new OrganizacionInfo();
                            destino        = new OrganizacionInfo();
                            destino.Activo = EstatusEnum.Activo;
                            destino.ListaTiposOrganizacion = this._tiposOrganizacionDestino;
                            EnvioAlimento.Destino.Activo   = EstatusEnum.Activo;
                            EnvioAlimento.Destino.ListaTiposOrganizacion = this._tiposOrganizacionDestino;
                            skAyudaDestino.LimpiarCampos();
                            skAyudaDestino.txtClave.Focus();
                            SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.EnvioAlimento_MsgOrganizacionDestinoNoEncontrada, MessageBoxButton.OK, MessageImage.Stop);
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.Error(ex);
                        SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.Tratamiento_ErrorInicial, MessageBoxButton.OK, MessageImage.Error);
                    }
                };
                this.OcultarLote(System.Windows.Visibility.Hidden);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
        }
Example #12
0
        /// <summary>
        /// Obtiene todos los almacenes por los tipo de almacen y organizacion.
        /// </summary>
        /// <param name="tiposAlmacen"></param>
        /// <param name="organizacion"></param>
        /// <returns></returns>
        internal List <AlmacenInfo> ObtenerAlmacenPorTiposAlmacen(List <TipoAlmacenEnum> tiposAlmacen, OrganizacionInfo organizacion)
        {
            List <AlmacenInfo> listaAlmacen = null;

            try
            {
                if (tiposAlmacen != null && tiposAlmacen.Count > 0)
                {
                    IList <AlmacenInfo> listaAlmacenes = ObtenerAlmacenPorOrganizacion(organizacion.OrganizacionID);

                    if (listaAlmacenes != null && listaAlmacenes.Count > 0)
                    {
                        listaAlmacen = new List <AlmacenInfo>();
                        foreach (var tipoAlmacen in tiposAlmacen)
                        {
                            listaAlmacen.AddRange((from almacen in listaAlmacenes
                                                   where almacen.TipoAlmacen.TipoAlmacenID == (int)tipoAlmacen
                                                   select almacen));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }

            return(listaAlmacen);
        }
Example #13
0
 internal static Dictionary <string, object> ObtenerParametrosObtenerProductosAlmacenInventario(AlmacenInfo almacen, OrganizacionInfo organizacion)
 {
     try
     {
         Logger.Info();
         var parametros =
             new Dictionary <string, object>
         {
             { "@AlmacenID", almacen.AlmacenID },
             { "@OrganizacionID", organizacion.OrganizacionID }
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Example #14
0
        /// <summary>
        /// Obtiene la descripcion de la sociedad, su id y la division
        /// </summary>
        /// <param name="reader"></param>
        /// <returns></returns>
        internal static OrganizacionInfo ObtenerOrganizacionSociedadDivision(IDataReader reader)
        {
            OrganizacionInfo organizacion = null;

            try
            {
                Logger.Info();
                while (reader.Read())
                {
                    organizacion = new OrganizacionInfo
                    {
                        OrganizacionID   = Convert.ToInt32(reader["OrganizacionId"]),
                        Sociedad         = Convert.ToString(reader["Sociedad"]),
                        Division         = Convert.ToString(reader["Division"]),
                        TituloPoliza     = Convert.ToString(reader["TituloPoliza"]),
                        TipoOrganizacion = new TipoOrganizacionInfo
                        {
                            TipoOrganizacionID =
                                Convert.ToInt32(reader["TipoOrganizacionID"]),
                            Descripcion =
                                Convert.ToString(reader["TipoOrganizacion"]),
                            TipoProceso = new TipoProcesoInfo
                            {
                                TipoProcesoID =
                                    Convert.ToInt32(
                                        reader[
                                            "TipoProcesoID"]),
                                Descripcion =
                                    Convert.ToString(reader[
                                                         "DescripcionTipoProceso"
                                                     ]),
                            },
                            DescripcionTipoProceso =
                                Convert.ToString(
                                    reader["DescripcionTipoProceso"])
                        },
                        Descripcion = Convert.ToString(reader["Descripcion"]),
                        Direccion   = Convert.ToString(reader["Direccion"]),
                        Activo      = Convert.ToBoolean(reader["Activo"]).BoolAEnum(),
                        Iva         = new IvaInfo
                        {
                            IvaID             = Convert.ToInt32(reader["IvaID"]),
                            Descripcion       = Convert.ToString(reader["DescripcionIva"]),
                            TasaIva           = Convert.ToDecimal(reader["TasaIva"]),
                            IndicadorIvaPagar =
                                Convert.ToString(reader["IndicadorIvaPagar"]),
                            IndicadorIvaRecuperar =
                                Convert.ToString(reader["IndicadorIvaRecuperar"]),
                            CuentaPagar = new CuentaInfo
                            {
                                ClaveCuenta =
                                    Convert.ToString(
                                        reader["CuentaPagar"])
                            },
                            CuentaRecuperar = new CuentaInfo
                            {
                                ClaveCuenta =
                                    Convert.ToString(
                                        reader["CuentaRecuperar"])
                            }
                        }
                    };
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(organizacion);
        }
Example #15
0
 internal int GuardarConsumoAlimento(List <AlmacenInventarioInfo> listaActualizadaProductos, OrganizacionInfo organizacion)
 {
     try
     {
         Logger.Info();
         var almacenDAL = new AlmacenDAL();
         int resultado  = almacenDAL.GuardarConsumoAlimento(listaActualizadaProductos, organizacion);
         return(resultado);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
        /// <summary>
        /// Genera la conciliacion de SAP contra SIAP
        /// </summary>
        /// <param name="polizasSAP"></param>
        /// <param name="polizasSIAP"></param>
        private void GenerarConciliacion(List <PolizaSAPInfo> polizasSAP, List <PolizaInfo> polizasSIAP)
        {
            OrganizacionInfo     organizacion = ObtenerOrganizacion();
            PolizaInfo           polizaSIAP;
            StringBuilder        sb;
            List <PolizaSAPInfo> polizasFaltantes;
            var conjuntoPolizas = new HashSet <string>();
            HashSet <string> prefijosCuenta;

            switch (Contexto.TipoCuenta)
            {
            case 1:
                prefijosCuenta = new HashSet <string>
                {
                    "1151",
                    "2104",
                    "4001",
                    "5001",
                };
                break;

            case 2:
                prefijosCuenta = new HashSet <string>
                {
                    "1154",
                };
                break;

            default:
                prefijosCuenta = new HashSet <string>
                {
                    "1153",
                    "1156",
                };
                break;
            }

            polizasSIAP =
                polizasSIAP.Where(x => x.Cuenta.Length > 0 && prefijosCuenta.Contains(x.Cuenta.Substring(0, 4))).ToList();
            for (var indexPolizaSIAP = 0; indexPolizaSIAP < polizasSIAP.Count; indexPolizaSIAP++)
            {
                polizaSIAP = polizasSIAP[indexPolizaSIAP];
                sb         = new StringBuilder();
                sb.AppendFormat("{0}.{1}.{2}", polizaSIAP.FechaDocumento.Substring(6, 2),
                                polizaSIAP.FechaDocumento.Substring(4, 2), polizaSIAP.FechaDocumento.Substring(0, 4));
                polizasFaltantes = polizasSAP.Where(
                    sap => sap.Cuenta.Trim().Equals(polizaSIAP.Cuenta.Trim()) &&
                    !sap.Cuenta.Trim().Equals(organizacion.Iva.CuentaRecuperar.ClaveCuenta) &&
                    sap.ClaseDocumento.Trim().Equals(polizaSIAP.ClaseDocumento.Trim()) &&
                    polizaSIAP.Concepto.Trim().Contains(sap.Concepto.Trim()) &&
                    polizaSIAP.Referencia3.Trim().Contains(sap.Ref3.Trim()) &&
                    sap.Sociedad.Trim().Equals(organizacion.Sociedad.Trim()) &&
                    sap.Division.Trim().Equals(organizacion.Division.Trim()) &&
                    sap.FechaDocumento.Trim().Equals(sb.ToString())).ToList();
                if (polizasFaltantes == null || !polizasFaltantes.Any())
                {
                    if (conjuntoPolizas.Contains(polizaSIAP.Referencia3))
                    {
                        continue;
                    }
                    Contexto.Polizas.Add(polizaSIAP);
                }
                conjuntoPolizas.Add(polizaSIAP.Referencia3);
            }
        }
Example #17
0
        private IList <PolizaInfo> ObtenerPoliza(List <AnimalCostoInfo> costosAnimales)
        {
            var polizasSalidaMuerte = new List <PolizaInfo>();

            var costosAgrupados =
                costosAnimales.Where(imp => imp.Importe > 0).GroupBy(costo => new { costo.CostoID, costo.AnimalID })
                .Select(animal => new
            {
                Importe = animal.Sum(imp => imp.Importe),
                animal.Key.CostoID,
                animal.Key.AnimalID,
                Arete           = animal.Select(ani => ani.Arete).FirstOrDefault(),
                FolioReferencia =
                    animal.Select(folio => folio.FolioReferencia).FirstOrDefault(),
                FechaCosto     = animal.Select(fecha => fecha.FechaCosto).FirstOrDefault(),
                OrganizacionID = animal.Select(org => org.OrganizacionID).FirstOrDefault()
            }).ToList();

            if (costosAgrupados != null && costosAgrupados.Any())
            {
                TipoPolizaInfo tipoPoliza =
                    TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.SalidaMuerte.GetHashCode());
                if (tipoPoliza == null)
                {
                    throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA",
                                                              TipoPoliza.SalidaMuerte));
                }

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

                if (costos == null)
                {
                    costos = ObtenerCostos();
                }

                List <AnimalInfo> animales = costosAgrupados.Select(ani => new AnimalInfo
                {
                    AnimalID = ani.AnimalID
                }).ToList();
                List <AnimalMovimientoInfo> animalesMovimiento = ObtenerUltimoMovimiento(animales);
                for (var indexCostos = 0; indexCostos < costosAgrupados.Count; indexCostos++)
                {
                    var       costoAnimal = costosAgrupados[indexCostos];
                    CostoInfo costo       =
                        costos.FirstOrDefault(
                            tipo =>
                            tipo.CostoID == costoAnimal.CostoID);
                    if (costo == null)
                    {
                        costo = new CostoInfo();
                    }

                    string numeroReferencia = costoAnimal.Arete;

                    OrganizacionInfo organizacion = ObtenerOrganizacionIVA(costoAnimal.OrganizacionID);
                    if (organizacion == null)
                    {
                        organizacion = new OrganizacionInfo
                        {
                            TipoOrganizacion = new TipoOrganizacionInfo()
                        };
                    }
                    ClaveContableInfo claveContableAbono = ObtenerCuentaInventario(costo, organizacion.OrganizacionID,
                                                                                   organizacion.TipoOrganizacion.TipoOrganizacionID);
                    if (claveContableAbono == null)
                    {
                        throw new ExcepcionServicio(string.Format("{0} {1}", "NO EXISTE CONFIGURACION PARA EL COSTO",
                                                                  costo.Descripcion));
                    }
                    ClaveContableInfo claveContableCargo = ObtenerCuentaInventario(costo, organizacion.OrganizacionID,
                                                                                   TipoPoliza.SalidaMuerte);
                    if (claveContableCargo == null)
                    {
                        throw new ExcepcionServicio(string.Format("{0} {1}", "NO EXISTE CONFIGURACION PARA EL COSTO",
                                                                  costo.Descripcion));
                    }
                    ParametroOrganizacionInfo parametroCentroCosto =
                        ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID,
                                                             ParametrosEnum.CTACENTROCOSTOENG.ToString());
                    if (parametroCentroCosto == null)
                    {
                        throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE COSTO NO CONFIGURADO"));
                    }
                    int peso =
                        animalesMovimiento.Where(kilos => kilos.AnimalID == costoAnimal.AnimalID
                                                 &&
                                                 kilos.TipoMovimientoID == TipoMovimiento.Muerte.GetHashCode())
                        .Select(proyeccion => proyeccion.Peso).FirstOrDefault();
                    DateTime fecha =
                        animalesMovimiento.Where(kilos => kilos.AnimalID == costoAnimal.AnimalID
                                                 &&
                                                 kilos.TipoMovimientoID == TipoMovimiento.Muerte.GetHashCode())
                        .Select(proyeccion => proyeccion.FechaMovimiento).FirstOrDefault();
                    if (fecha != null && fecha > default(DateTime))
                    {
                        string archivoFolio = ObtenerArchivoFolio(fecha);
                        var    datos        = new DatosPolizaInfo
                        {
                            NumeroReferencia = numeroReferencia,
                            FechaEntrada     = fecha,
                            Folio            = numeroReferencia,
                            Importe          = string.Format("{0}", costoAnimal.Importe.ToString("F2")),
                            Renglon          = Convert.ToString(linea++),
                            ImporteIva       = "0",
                            Ref3             = ref3.ToString(),
                            Cuenta           = claveContableCargo.Valor,
                            Division         = organizacion.Division,
                            ArchivoFolio     = archivoFolio,
                            CentroCosto      =
                                claveContableCargo.Valor.StartsWith(PrefijoCuentaCentroCosto) ||
                                claveContableCargo.Valor.StartsWith(PrefijoCuentaCentroGasto)
                                    ? parametroCentroCosto.Valor
                                    : string.Empty,
                            PesoOrigen      = peso,
                            TipoDocumento   = textoDocumento,
                            ClaseDocumento  = postFijoRef3,
                            ComplementoRef1 = string.Empty,
                            Concepto        = String.Format("{0}-{1} {2} kgs",
                                                            tipoMovimiento,
                                                            numeroReferencia,
                                                            peso),
                            Sociedad = organizacion.Sociedad,
                            Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                        };
                        PolizaInfo polizaSalida = GeneraRegistroPoliza(datos);
                        polizasSalidaMuerte.Add(polizaSalida);

                        datos = new DatosPolizaInfo
                        {
                            NumeroReferencia = numeroReferencia,
                            FechaEntrada     = fecha,
                            Folio            = numeroReferencia,
                            Importe          = string.Format("{0}", (costoAnimal.Importe * -1).ToString("F2")),
                            Renglon          = Convert.ToString(linea++),
                            ImporteIva       = "0",
                            Ref3             = ref3.ToString(),
                            Cuenta           = claveContableAbono.Valor,
                            ArchivoFolio     = archivoFolio,
                            Division         = organizacion.Division,
                            PesoOrigen       = peso,
                            TipoDocumento    = textoDocumento,
                            ClaseDocumento   = postFijoRef3,
                            Concepto         = String.Format("{0}-{1} {2} kgs",
                                                             tipoMovimiento,
                                                             numeroReferencia,
                                                             peso),
                            Sociedad = organizacion.Sociedad,
                            Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                        };
                        polizaSalida = GeneraRegistroPoliza(datos);
                        polizasSalidaMuerte.Add(polizaSalida);
                    }
                }
            }
            return(polizasSalidaMuerte);
        }
        private IList <PolizaInfo> ObtenerPoliza(GastoInventarioInfo gastoInventario)
        {
            var polizasGastosInventario = new List <PolizaInfo>();

            var costos = new List <int> {
                gastoInventario.Costo.CostoID
            };
            var retencionBL = new RetencionBL();
            var retenciones = retencionBL.ObtenerRetencionesConCosto(costos);
            IList <CuentaSAPInfo> cuentasSap = ObtenerCuentasSAP();

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

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

            string textoDocumento = tipoPoliza.TextoDocumento;
            string tipoMovimiento = tipoPoliza.ClavePoliza;
            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 numeroReferencia = ObtenerNumeroReferencia;
            string numeroReferencia = ObtenerNumeroReferenciaFolio(gastoInventario.FolioGasto);

            DateTime fecha        = gastoInventario.FechaGasto;
            string   archivoFolio = ObtenerArchivoFolio(fecha);

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

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

            bool esProveedor    = gastoInventario.Proveedor != null && gastoInventario.Proveedor.ProveedorID > 0;
            bool tieneRetencion = gastoInventario.Retencion;
            var  renglon        = 0;

            ClaveContableInfo claveContableInfo = ObtenerCuentaInventario(gastoInventario.Costo
                                                                          , gastoInventario.Organizacion.OrganizacionID
                                                                          , 0);

            CuentaSAPInfo cuentaSapProvision = null;

            if (!esProveedor)
            {
                cuentaSapProvision =
                    cuentasSap.FirstOrDefault(
                        clave => clave.CuentaSAPID == gastoInventario.CuentaSAP.CuentaSAPID);
                if (cuentaSapProvision == null)
                {
                    cuentaSapProvision =
                        cuentasSap.FirstOrDefault(
                            clave =>
                            clave.CuentaSAP.Equals(gastoInventario.CuentaGasto,
                                                   StringComparison.InvariantCultureIgnoreCase));

                    if (cuentaSapProvision == null)
                    {
                        throw new ExcepcionServicio(
                                  string.Format("No se encuentra configurada la cuenta de provisión, para el costo {0}",
                                                gastoInventario.Costo.Descripcion));
                    }
                }
            }
            string complementoConcepto;

            if (gastoInventario.Corral != null)
            {
                complementoConcepto = string.Format("Corral {0}", gastoInventario.Corral.Codigo);
            }
            else
            {
                complementoConcepto = string.Format("{0} Corrales", gastoInventario.TotalCorrales);
            }
            PolizaInfo polizaEntrada;

            if (esProveedor)
            {
                if (!gastoInventario.IVA && !tieneRetencion)
                {
                    renglon++;
                    var datos = new DatosPolizaInfo
                    {
                        NumeroReferencia = numeroReferencia,
                        FechaEntrada     = gastoInventario.FechaGasto,
                        Folio            = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture),
                        ClaseDocumento   = postFijoRef3,
                        Importe          =
                            string.Format("{0}",
                                          Cancelacion ? (gastoInventario.Importe * -1).ToString("F2")
                                                                      : gastoInventario.Importe.ToString("F2")),
                        Renglon          = Convert.ToString(renglon),
                        Division         = organizacion.Division,
                        ImporteIva       = "0",
                        Ref3             = ref3.ToString(),
                        Cuenta           = claveContableInfo.Valor,
                        ArchivoFolio     = archivoFolio,
                        DescripcionCosto = claveContableInfo.Descripcion,
                        PesoOrigen       = 0,
                        TipoDocumento    = textoDocumento,
                        Concepto         =
                            String.Format("{0}-{1},{2}", tipoMovimiento,
                                          gastoInventario.FolioGasto
                                          , complementoConcepto),
                        Sociedad = organizacion.Sociedad,
                        Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                    };
                    polizaEntrada = GeneraRegistroPoliza(datos);
                    polizasGastosInventario.Add(polizaEntrada);

                    renglon++;
                    datos = new DatosPolizaInfo
                    {
                        NumeroReferencia = numeroReferencia,
                        FechaEntrada     = gastoInventario.FechaGasto,
                        Folio            = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture),
                        ClaveProveedor   = gastoInventario.Proveedor.CodigoSAP,
                        ClaseDocumento   = postFijoRef3,
                        Importe          =
                            string.Format("{0}", Cancelacion ? gastoInventario.Importe.ToString("F2")
                                                                         : (gastoInventario.Importe * -1).ToString("F2")),
                        Renglon          = Convert.ToString(renglon),
                        ImporteIva       = "0",
                        Ref3             = ref3.ToString(),
                        ArchivoFolio     = archivoFolio,
                        DescripcionCosto = gastoInventario.Proveedor.Descripcion,
                        PesoOrigen       = 0,
                        Division         = organizacion.Division,
                        TipoDocumento    = textoDocumento,
                        Concepto         =
                            String.Format("{0}-{1},{2}", tipoMovimiento,
                                          gastoInventario.FolioGasto
                                          , complementoConcepto),
                        Sociedad = organizacion.Sociedad,
                        Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                    };
                    polizaEntrada = GeneraRegistroPoliza(datos);
                    polizasGastosInventario.Add(polizaEntrada);
                }
                else
                {
                    if (gastoInventario.IVA)
                    {
                        CuentaSAPInfo cuentaIva = cuentasSap.FirstOrDefault(
                            clave => clave.CuentaSAP.Equals(organizacion.Iva.CuentaRecuperar.ClaveCuenta));
                        if (cuentaIva == null)
                        {
                            throw new ExcepcionServicio(string.Format("No se encuentra configurada la cuenta de iva, para la organización."));
                        }
                        renglon++;
                        var importeIva = gastoInventario.Importe * (organizacion.Iva.TasaIva / 100);
                        var datos      = new DatosPolizaInfo
                        {
                            NumeroReferencia = numeroReferencia,
                            FechaEntrada     = gastoInventario.FechaGasto,
                            Folio            = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture),
                            Division         = organizacion.Division,
                            ClaseDocumento   = postFijoRef3,
                            Importe          = string.Format("{0}",
                                                             Cancelacion ? (gastoInventario.Importe * -1).ToString("F2")
                                                                                : gastoInventario.Importe.ToString("F2")),
                            Renglon          = Convert.ToString(renglon),
                            ImporteIva       = "0",
                            Ref3             = ref3.ToString(),
                            Cuenta           = claveContableInfo.Valor,
                            ArchivoFolio     = archivoFolio,
                            DescripcionCosto = claveContableInfo.Descripcion,
                            PesoOrigen       = 0,
                            TipoDocumento    = textoDocumento,
                            Concepto         =
                                String.Format("{0}-{1},{2}", tipoMovimiento,
                                              gastoInventario.FolioGasto
                                              , complementoConcepto),
                            Sociedad = organizacion.Sociedad,
                            Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                        };
                        polizaEntrada = GeneraRegistroPoliza(datos);
                        polizasGastosInventario.Add(polizaEntrada);
                        renglon++;
                        datos = new DatosPolizaInfo
                        {
                            NumeroReferencia = numeroReferencia,
                            FechaEntrada     = gastoInventario.FechaGasto,
                            Folio            = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture),
                            ClaseDocumento   = postFijoRef3,
                            Importe          = string.Format("{0}",
                                                             Cancelacion ? (importeIva * -1).ToString("F2")
                                                                            : importeIva.ToString("F2"))
                            ,
                            Renglon           = Convert.ToString(renglon),
                            ImporteIva        = gastoInventario.Importe.ToString("F2"),
                            ClaveImpuesto     = ClaveImpuesto,
                            CondicionImpuesto = CondicionImpuesto,
                            IndicadorImpuesto = organizacion.Iva.IndicadorIvaRecuperar,
                            Ref3             = ref3.ToString(),
                            Division         = organizacion.Division,
                            Cuenta           = organizacion.Iva.CuentaRecuperar.ClaveCuenta,
                            ArchivoFolio     = archivoFolio,
                            DescripcionCosto = cuentaIva.Descripcion,
                            PesoOrigen       = 0,
                            TipoDocumento    = textoDocumento,
                            Concepto         =
                                String.Format("{0}-{1},{2}", tipoMovimiento,
                                              gastoInventario.FolioGasto
                                              , complementoConcepto),
                            Sociedad = organizacion.Sociedad,
                            Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                        };
                        polizaEntrada = GeneraRegistroPoliza(datos);
                        polizasGastosInventario.Add(polizaEntrada);
                        renglon++;
                        datos = new DatosPolizaInfo
                        {
                            NumeroReferencia = numeroReferencia,
                            FechaEntrada     = gastoInventario.FechaGasto,
                            Folio            = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture),
                            Division         = organizacion.Division,
                            ClaveProveedor   = gastoInventario.Proveedor.CodigoSAP,
                            ClaseDocumento   = postFijoRef3,
                            Importe          = string.Format("{0}",
                                                             Cancelacion ? (gastoInventario.Importe + importeIva).ToString("F2")
                                                                            : ((gastoInventario.Importe + importeIva) * -1).ToString("F2")),
                            Renglon          = Convert.ToString(renglon),
                            ImporteIva       = "0",
                            Ref3             = ref3.ToString(),
                            ArchivoFolio     = archivoFolio,
                            DescripcionCosto = gastoInventario.Proveedor.Descripcion,
                            PesoOrigen       = 0,
                            TipoDocumento    = textoDocumento,
                            Concepto         =
                                String.Format("{0}-{1},{2}", tipoMovimiento,
                                              gastoInventario.FolioGasto
                                              , complementoConcepto),
                            Sociedad = organizacion.Sociedad,
                            Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                        };
                        polizaEntrada = GeneraRegistroPoliza(datos);
                        polizasGastosInventario.Add(polizaEntrada);
                    }
                    if (tieneRetencion)
                    {
                        RetencionInfo retencion;
                        if (retenciones != null && retenciones.Any())
                        {
                            retencion =
                                retenciones.Where(
                                    costo => costo.CostoID.Equals(gastoInventario.Costo.CostoID)).
                                Select(ret => ret).FirstOrDefault();

                            if (retencion == null)
                            {
                                throw new ExcepcionServicio(string.Format("No se encuentra configurada retención para el costo {0}", gastoInventario.Costo.Descripcion));
                            }
                        }
                        else
                        {
                            throw new ExcepcionServicio(string.Format("No se encuentra configurada retención para el costo {0}", gastoInventario.Costo.Descripcion));
                        }
                        var parametrosRetencion = new StringBuilder();
                        parametrosRetencion.Append(String.Format("{0}{1}"
                                                                 , retencion.IndicadorRetencion
                                                                 , retencion.TipoRetencion));
                        var datos = new DatosPolizaInfo
                        {
                            NumeroReferencia  = numeroReferencia,
                            FechaEntrada      = gastoInventario.FechaGasto,
                            Folio             = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture),
                            Division          = organizacion.Division,
                            ClaveProveedor    = gastoInventario.Proveedor.CodigoSAP,
                            ClaseDocumento    = postFijoRef3,
                            IndicadorImpuesto = parametrosRetencion.ToString(),
                            Importe           = string.Format("{0}{1}",
                                                              Cancelacion ? string.Empty : "-",
                                                              "0"),
                            Renglon          = Convert.ToString(renglon),
                            ImporteIva       = "0",
                            Ref3             = ref3.ToString(),
                            CodigoRetencion  = retencion.IndicadorImpuesto,
                            TipoRetencion    = retencion.IndicadorRetencion,
                            ArchivoFolio     = archivoFolio,
                            DescripcionCosto = gastoInventario.Proveedor.Descripcion,
                            PesoOrigen       = 0,
                            TipoDocumento    = textoDocumento,
                            Concepto         =
                                String.Format("{0}-{1},{2}", tipoMovimiento,
                                              gastoInventario.FolioGasto
                                              , complementoConcepto),
                            Sociedad = organizacion.Sociedad,
                            Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                        };
                        polizaEntrada = GeneraRegistroPoliza(datos);
                        polizasGastosInventario.Add(polizaEntrada);
                        if (!gastoInventario.IVA)
                        {
                            renglon++;
                            datos = new DatosPolizaInfo
                            {
                                NumeroReferencia = numeroReferencia,
                                FechaEntrada     = gastoInventario.FechaGasto,
                                Folio            = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture),
                                Division         = organizacion.Division,
                                ClaveProveedor   = gastoInventario.Proveedor.CodigoSAP,
                                ClaseDocumento   = postFijoRef3,
                                Importe          = string.Format("{0}",
                                                                 Cancelacion
                                                                        ? gastoInventario.Importe.ToString("F2")
                                                                        : (gastoInventario.Importe * -1).ToString("F2"))
                                ,
                                Renglon          = Convert.ToString(renglon),
                                ImporteIva       = "0",
                                Ref3             = ref3.ToString(),
                                ArchivoFolio     = archivoFolio,
                                DescripcionCosto = gastoInventario.Proveedor.Descripcion,
                                PesoOrigen       = 0,
                                TipoDocumento    = textoDocumento,
                                Concepto         =
                                    String.Format("{0}-{1},{2}", tipoMovimiento,
                                                  gastoInventario.FolioGasto
                                                  , complementoConcepto),
                                Sociedad = organizacion.Sociedad,
                                Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                            };
                            polizaEntrada = GeneraRegistroPoliza(datos);
                            polizasGastosInventario.Add(polizaEntrada);
                            renglon++;
                            datos = new DatosPolizaInfo
                            {
                                NumeroReferencia = numeroReferencia,
                                FechaEntrada     = gastoInventario.FechaGasto,
                                Folio            = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture),
                                Division         = organizacion.Division,
                                ClaseDocumento   = postFijoRef3,
                                Importe          = string.Format("{0}",
                                                                 Cancelacion
                                                                        ? (gastoInventario.Importe * -1).ToString("F2")
                                                                        : gastoInventario.Importe.ToString("F2")),
                                Renglon          = Convert.ToString(renglon),
                                ImporteIva       = "0",
                                Ref3             = ref3.ToString(),
                                Cuenta           = claveContableInfo.Valor,
                                ArchivoFolio     = archivoFolio,
                                DescripcionCosto = claveContableInfo.Descripcion,
                                PesoOrigen       = 0,
                                TipoDocumento    = textoDocumento,
                                Concepto         =
                                    String.Format("{0}-{1},{2}", tipoMovimiento,
                                                  gastoInventario.FolioGasto
                                                  , complementoConcepto),
                                Sociedad = organizacion.Sociedad,
                                Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                            };
                            polizaEntrada = GeneraRegistroPoliza(datos);
                            polizasGastosInventario.Add(polizaEntrada);
                        }
                    }
                }
            }
            else
            {
                renglon++;
                var datos = new DatosPolizaInfo
                {
                    NumeroReferencia = numeroReferencia,
                    FechaEntrada     = gastoInventario.FechaGasto,
                    Folio            = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture),
                    Division         = organizacion.Division,
                    ClaseDocumento   = postFijoRef3,
                    Importe          = string.Format("{0}", Cancelacion ? (gastoInventario.Importe * -1).ToString("F2")
                                                                               : gastoInventario.Importe.ToString("F2")),
                    Renglon          = Convert.ToString(renglon),
                    ImporteIva       = "0",
                    Ref3             = ref3.ToString(),
                    Cuenta           = claveContableInfo.Valor,
                    ArchivoFolio     = archivoFolio,
                    DescripcionCosto = claveContableInfo.Descripcion,
                    PesoOrigen       = 0,
                    TipoDocumento    = textoDocumento,
                    Concepto         =
                        String.Format("{0}-{1},{2}", tipoMovimiento,
                                      gastoInventario.FolioGasto
                                      , complementoConcepto),
                    Sociedad = organizacion.Sociedad,
                    Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                };
                polizaEntrada = GeneraRegistroPoliza(datos);
                polizasGastosInventario.Add(polizaEntrada);

                renglon++;

                datos = new DatosPolizaInfo
                {
                    NumeroReferencia = numeroReferencia,
                    FechaEntrada     = gastoInventario.FechaGasto,
                    Folio            = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture),
                    Division         = organizacion.Division,
                    ClaseDocumento   = postFijoRef3,
                    Importe          = string.Format("{0}", Cancelacion ? gastoInventario.Importe.ToString("F2")
                                                                           : (gastoInventario.Importe * -1).ToString("F2")),
                    CentroCosto      = gastoInventario.CentroCosto,
                    Renglon          = Convert.ToString(renglon),
                    ImporteIva       = "0",
                    Ref3             = ref3.ToString(),
                    Cuenta           = cuentaSapProvision.CuentaSAP,
                    ArchivoFolio     = archivoFolio,
                    DescripcionCosto = cuentaSapProvision.Descripcion,
                    PesoOrigen       = 0,
                    TipoDocumento    = textoDocumento,
                    Concepto         =
                        String.Format("{0}-{1},{2}", tipoMovimiento,
                                      gastoInventario.FolioGasto
                                      , complementoConcepto),
                    Sociedad = organizacion.Sociedad,
                    Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                };
                polizaEntrada = GeneraRegistroPoliza(datos);
                polizasGastosInventario.Add(polizaEntrada);
            }
            return(polizasGastosInventario);
        }
        public override MemoryStream ImprimePoliza(object datosPoliza, IList <PolizaInfo> polizas)
        {
            try
            {
                PolizaModel     = new PolizaModel();
                polizaImpresion = new PolizaImpresion <PolizaModel>(PolizaModel, TipoPoliza.GastosInventario);

                var almacenesInventarioLote = datosPoliza as List <AlmacenInventarioLoteInfo>;

                IList <FormulaInfo> formulas = ObtenerFormulas();

                AlmacenInventarioLoteInfo almacenFormula =
                    almacenesInventarioLote.FirstOrDefault(
                        alm =>
                        alm.AlmacenInventario.Producto.SubfamiliaId == SubFamiliasEnum.AlimentoFormulado.GetHashCode());
                if (almacenFormula != null)
                {
                    FormulaInfo formulaProducida =
                        formulas.FirstOrDefault(
                            form => form.Producto.ProductoId == almacenFormula.AlmacenInventario.Producto.ProductoId);

                    if (formulaProducida != null)
                    {
                        formulaGenerada = formulaProducida.Descripcion;
                    }
                }

                if (almacenesInventarioLote == null)
                {
                    return(null);
                }

                var primerAlmacenInventarioLote = almacenesInventarioLote.FirstOrDefault();
                if (primerAlmacenInventarioLote == null)
                {
                    return(null);
                }

                long     folioVenta     = 1; //almacenInventarioLote.Select(folio => folio.AnimalID).FirstOrDefault();
                int      organizacionID = primerAlmacenInventarioLote.AlmacenInventario.Almacen.Organizacion.OrganizacionID;
                DateTime fechaVenta     = primerAlmacenInventarioLote.FechaProduccionFormula;

                OrganizacionInfo organizacionOrigen = ObtenerOrganizacionIVA(organizacionID);
                PolizaModel.Encabezados = new List <PolizaEncabezadoModel>
                {
                    new PolizaEncabezadoModel
                    {
                        Descripcion    = organizacionOrigen.Descripcion,
                        Desplazamiento = 0
                    },
                    new PolizaEncabezadoModel
                    {
                        Descripcion    = "Por Producción",
                        Desplazamiento = 0
                    }
                };
                polizaImpresion.GeneraCabecero(new[] { "100", "100" }, "NombreGanadera");
                PolizaModel.Encabezados = new List <PolizaEncabezadoModel>
                {
                    new PolizaEncabezadoModel
                    {
                        Descripcion    = "Nota de Salida de almacen",
                        Desplazamiento = 0
                    },
                    new PolizaEncabezadoModel
                    {
                        Descripcion =
                            string.Format("{0} {1}", "FOLIO No.",
                                          folioVenta),
                        Desplazamiento = 0
                    },
                };
                polizaImpresion.GeneraCabecero(new[] { "100", "100" }, "NombreGanadera");
                GeneraLinea(2);
                polizaImpresion.GeneraCabecero(new[] { "50", "50" }, "NombreGanadera");
                PolizaModel.Encabezados = new List <PolizaEncabezadoModel>
                {
                    new PolizaEncabezadoModel
                    {
                        Descripcion    = "CARGO A:",
                        Desplazamiento = 0
                    },
                    new PolizaEncabezadoModel
                    {
                        Descripcion =
                            string.Format("{0}:{1}", "FECHA",
                                          fechaVenta.ToShortDateString()),
                    },
                };
                polizaImpresion.GeneraCabecero(new[] { "50", "50" }, "Folio");
                PolizaModel.Encabezados = new List <PolizaEncabezadoModel>
                {
                    new PolizaEncabezadoModel
                    {
                        Descripcion = "TRANSPORTE:"
                    },
                    new PolizaEncabezadoModel
                    {
                        Descripcion = "REFERENCIA:"
                    },
                };
                polizaImpresion.GeneraCabecero(new[] { "50", "50" }, "FECHA");
                GeneraLinea(2);
                polizaImpresion.GeneraCabecero(new[] { "50", "50" }, "FECHA");


                GeneraLineaEncabezadoDetalle();

                GeneraLineasDetalle(almacenesInventarioLote);
                GeneraLinea(9);
                polizaImpresion.GeneraCabecero(new[] { "100" }, "Detalle");


                GeneraLineaTotales(almacenesInventarioLote.Where(alm => alm.AlmacenInventario.Producto.SubfamiliaId != SubFamiliasEnum.AlimentoFormulado.GetHashCode()));
                GeneraLinea(9);
                polizaImpresion.GenerarDetalles("Detalle");


                GeneraLinea(5);
                polizaImpresion.GenerarLineaEnBlanco();

                GeneraLineaEncabezadoRegistroContable(folioVenta);
                polizaImpresion.GeneraCabecero(new[] { "30", "60", "65", "25", "25" }, "RegistroContable");

                GeneraLineaSubEncabezadoRegistroContable(true, "Codigo", "Debe", "Abono");
                polizaImpresion.GeneraCabecero(new[] { "30", "60", "65", "25", "25" }, "RegistroContable");

                IList <PolizaInfo> cargos;
                IList <PolizaInfo> abonos;
                GeneraLineaRegistroContable(polizas, out cargos, out abonos);
                polizaImpresion.GenerarRegistroContable("RegistroContable");

                GeneraLinea(5);
                polizaImpresion.GeneraCabecero(new[] { "100" }, "RegistroContable");
                GenerarLineaSumaRegistroContable(polizas, "Financiero");
                polizaImpresion.GeneraCabecero(new[] { "30", "60", "65", "25", "25" }, "RegistroContable");

                GeneraLinea(5);
                polizaImpresion.GeneraCabecero(new[] { "100" }, "RegistroContable");


                polizaImpresion.GenerarLineaEnBlanco("RegistroContable", 5);
                polizaImpresion.GenerarLineaEnBlanco("RegistroContable", 5);
                polizaImpresion.GenerarLineaEnBlanco("RegistroContable", 5);
                GenerarLineaRevisoRecibio();
                polizaImpresion.GeneraCabecero(new[] { "30", "60", "65", "25" }, "RegistroContable");


                return(polizaImpresion.GenerarArchivo());
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw;
            }
        }
Example #20
0
        public override MemoryStream ImprimePoliza(object datosPoliza, IList <PolizaInfo> polizas)
        {
            try
            {
                PolizaModel     = new PolizaModel();
                polizaImpresion = new PolizaImpresion <PolizaModel>(PolizaModel, TipoPoliza.EntradaTraspaso);

                var traspasoMp = datosPoliza as TraspasoMpPaMedInfo;

                if (traspasoMp == null)
                {
                    return(null);
                }

                long folioTraspaso = traspasoMp.FolioTraspaso;
                //int organizacionOrigenID = traspasoMp.OrganizacionOrigen.OrganizacionID;
                int      organizacionDestinoID = traspasoMp.OrganizacionDestino.OrganizacionID;
                DateTime fechaVenta            = traspasoMp.FechaTraspaso;

                OrganizacionInfo organizacionDestino = ObtenerOrganizacionIVA(organizacionDestinoID);
                PolizaModel.Encabezados = new List <PolizaEncabezadoModel>
                {
                    new PolizaEncabezadoModel
                    {
                        Descripcion    = organizacionDestino.Descripcion,
                        Desplazamiento = 0
                    },
                    new PolizaEncabezadoModel
                    {
                        Descripcion    = "Por Traspaso",
                        Desplazamiento = 0
                    }
                };
                polizaImpresion.GeneraCabecero(new[] { "100", "100" }, "NombreGanadera");
                PolizaModel.Encabezados = new List <PolizaEncabezadoModel>
                {
                    new PolizaEncabezadoModel
                    {
                        Descripcion    = "Nota de Salida de almacen",
                        Desplazamiento = 0
                    },
                    new PolizaEncabezadoModel
                    {
                        Descripcion =
                            string.Format("{0} {1}", "FOLIO No.",
                                          folioTraspaso),
                        Desplazamiento = 0
                    },
                };
                polizaImpresion.GeneraCabecero(new[] { "100", "100" }, "NombreGanadera");
                GeneraLinea(2);
                polizaImpresion.GeneraCabecero(new[] { "50", "50" }, "NombreGanadera");
                PolizaModel.Encabezados = new List <PolizaEncabezadoModel>
                {
                    new PolizaEncabezadoModel
                    {
                        Descripcion    = string.Format("CARGO A: {0}", traspasoMp.AlmacenDestino.Descripcion),
                        Desplazamiento = 0
                    },
                    new PolizaEncabezadoModel
                    {
                        Descripcion =
                            string.Format("{0}:{1}", "FECHA",
                                          fechaVenta.ToShortDateString()),
                    },
                };
                polizaImpresion.GeneraCabecero(new[] { "50", "50" }, "Folio");
                GeneraLinea(2);
                polizaImpresion.GeneraCabecero(new[] { "50", "50" }, "FECHA");


                GeneraLineaEncabezadoDetalle();

                GeneraLineasDetalle(traspasoMp);
                GeneraLinea(6);
                polizaImpresion.GeneraCabecero(new[] { "100" }, "Detalle");


                GeneraLineaTotales(traspasoMp);
                GeneraLinea(6);
                polizaImpresion.GenerarDetalles("Detalle");


                GeneraLinea(5);
                polizaImpresion.GenerarLineaEnBlanco();

                GeneraLineaEncabezadoRegistroContable(folioTraspaso);
                polizaImpresion.GeneraCabecero(new[] { "30", "60", "65", "25", "25" }, "RegistroContable");

                GeneraLineaSubEncabezadoRegistroContable(true, "Código", "Debe", "Haber");
                polizaImpresion.GeneraCabecero(new[] { "30", "60", "65", "25", "25" }, "RegistroContable");

                IList <PolizaInfo> cargos;
                IList <PolizaInfo> abonos;
                GeneraLineaRegistroContable(polizas, out cargos, out abonos);
                polizaImpresion.GenerarRegistroContable("RegistroContable");

                GeneraLinea(5);
                polizaImpresion.GeneraCabecero(new[] { "100" }, "RegistroContable");
                GenerarLineaSumaRegistroContable(polizas, "Total=====>");
                polizaImpresion.GeneraCabecero(new[] { "30", "60", "65", "25", "25" }, "RegistroContable");

                GeneraLinea(5);
                polizaImpresion.GeneraCabecero(new[] { "100" }, "RegistroContable");


                polizaImpresion.GenerarLineaEnBlanco("RegistroContable", 5);
                polizaImpresion.GenerarLineaEnBlanco("RegistroContable", 5);
                polizaImpresion.GenerarLineaEnBlanco("RegistroContable", 5);
                GenerarLineaRevisoRecibio();
                polizaImpresion.GeneraCabecero(new[] { "30", "60", "65", "25" }, "RegistroContable");


                return(polizaImpresion.GenerarArchivo());
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw;
            }
        }
Example #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);
        }
Example #22
0
        /// <summary>
        ///     Metodo que guarda ServicioAlimento
        /// </summary>
        /// <param name="info"></param>
        internal void Guardar(IList <ServicioAlimentoInfo> info)
        {
            try
            {
                Logger.Info();
                var repartoBL            = new RepartoBL();
                var listaRepartosGuardar = new List <CambiosReporteInfo>();
                var tipoServicio         = TipoServicioEnum.Matutino;

                int organizacionID   = info.Select(rep => rep.OrganizacionID).First();
                var organizacionInfo = new OrganizacionInfo
                {
                    OrganizacionID = organizacionID
                };
                DateTime fechaHoy = DateTime.Now.Date;

                List <RepartoDetalleInfo> repartosDelDia =
                    repartoBL.ObtenerRepartoDetallePorOrganizacionID(organizacionInfo, fechaHoy);

                if (repartosDelDia != null)
                {
                    int repartosMatutino =
                        repartosDelDia.Count(
                            rep => rep.TipoServicioID == TipoServicioEnum.Matutino.GetHashCode());

                    int repartosServidosMatutino =
                        repartosDelDia.Count(
                            rep => rep.TipoServicioID == TipoServicioEnum.Matutino.GetHashCode() && rep.Servido);

                    int porcentajeServido = (repartosServidosMatutino / repartosMatutino) * 100;
                    if (porcentajeServido > 30)
                    {
                        tipoServicio = TipoServicioEnum.Vespertino;
                    }
                }


                List <CorralInfo> listaCorrales = (from rep in info
                                                   select new CorralInfo
                {
                    CorralID = rep.CorralID
                }).ToList();
                List <RepartoInfo> listaRepartosHoy     = repartoBL.ObtenerRepartosPorFechaCorrales(fechaHoy, organizacionID, listaCorrales);
                List <RepartoInfo> listaRepartosManiana = repartoBL.ObtenerRepartosPorFechaCorrales(fechaHoy.AddDays(1), organizacionID, listaCorrales);

                if (listaRepartosHoy == null)
                {
                    listaRepartosHoy = new List <RepartoInfo>();
                }
                if (listaRepartosManiana == null)
                {
                    listaRepartosManiana = new List <RepartoInfo>();
                }

                foreach (var servicio in info)
                {
                    var repartoActual = new CambiosReporteInfo();
                    RepartoDetalleInfo servicioMatutino;
                    RepartoDetalleInfo servicioVespertino;
                    RepartoInfo        repartoHoy =
                        listaRepartosHoy.FirstOrDefault(rep => rep.Corral.CorralID == servicio.CorralID);

                    RepartoInfo repartoManiana =
                        listaRepartosManiana.FirstOrDefault(rep => rep.Corral.CorralID == servicio.CorralID);

                    repartoActual.RepartoID          = 0;
                    repartoActual.CantidadProgramada = servicio.KilosProgramados;
                    repartoActual.Observaciones      = servicio.Comentarios;
                    repartoActual.EstadoComederoID   = EstadoComederoEnum.Normal.GetHashCode();
                    if (repartoHoy != null)
                    {
                        repartoActual.FechaReparto = DateTime.Now.AddDays(1);
                    }
                    else
                    {
                        repartoActual.FechaReparto = DateTime.Now;
                    }
                    repartoActual.FormulaIDProgramada   = servicio.FormulaID;
                    repartoActual.OrganizacionID        = servicio.OrganizacionID;
                    repartoActual.UsuarioModificacionID = servicio.UsuarioCreacionID;
                    repartoActual.TipoServicioID        = tipoServicio.GetHashCode();
                    repartoActual.CorralInfo            = new CorralInfo
                    {
                        CorralID = servicio.CorralID,
                        Codigo   = servicio.CodigoCorral
                    };

                    if (repartoHoy != null)
                    {
                        repartoActual.RepartoID = repartoHoy.RepartoID;
                        servicioMatutino        =
                            repartoHoy.DetalleReparto.FirstOrDefault(
                                rep => rep.TipoServicioID == TipoServicioEnum.Matutino.GetHashCode());
                        servicioVespertino =
                            repartoHoy.DetalleReparto.FirstOrDefault(
                                rep => rep.TipoServicioID == TipoServicioEnum.Vespertino.GetHashCode());
                        if (servicioMatutino != null)
                        {
                            if (!servicioMatutino.Servido)
                            {
                                repartoActual.RepartoDetalleIdManiana = servicioMatutino.RepartoDetalleID;
                                listaRepartosGuardar.Add(repartoActual);
                                continue;
                            }
                        }
                        if (servicioVespertino != null)
                        {
                            if (!servicioVespertino.Servido)
                            {
                                repartoActual.RepartoDetalleIdTarde = servicioVespertino.RepartoDetalleID;
                                listaRepartosGuardar.Add(repartoActual);
                                continue;
                            }
                        }
                    }
                    if (repartoManiana != null)
                    {
                        repartoActual.RepartoID = repartoManiana.RepartoID;
                        servicioMatutino        =
                            repartoManiana.DetalleReparto.FirstOrDefault(
                                rep => rep.TipoServicioID == TipoServicioEnum.Matutino.GetHashCode());
                        servicioVespertino =
                            repartoManiana.DetalleReparto.FirstOrDefault(
                                rep => rep.TipoServicioID == TipoServicioEnum.Vespertino.GetHashCode());
                        if (servicioMatutino != null)
                        {
                            if (!servicioMatutino.Servido)
                            {
                                repartoActual.RepartoDetalleIdManiana = servicioMatutino.RepartoDetalleID;
                                listaRepartosGuardar.Add(repartoActual);
                                continue;
                            }
                        }
                        if (servicioVespertino != null)
                        {
                            if (!servicioVespertino.Servido)
                            {
                                repartoActual.RepartoDetalleIdTarde = servicioVespertino.RepartoDetalleID;
                                listaRepartosGuardar.Add(repartoActual);
                                continue;
                            }
                        }
                    }

                    listaRepartosGuardar.Add(repartoActual);
                }
                var servicioAlimentoDAL = new ServicioAlimentoDAL();
                using (var transaccion = new TransactionScope())
                {
                    repartoBL.GuardarRepartosServicioCorrales(listaRepartosGuardar);
                    servicioAlimentoDAL.Guardar(info);
                    transaccion.Complete();
                }
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
        public override MemoryStream ImprimePoliza(object datosPoliza, IList <PolizaInfo> polizas)
        {
            try
            {
                var ajustesDeInventario = datosPoliza as List <PolizaEntradaSalidaPorAjusteModel>;
                PolizaModel     = new PolizaModel();
                polizaImpresion = new PolizaImpresion <PolizaModel>(PolizaModel, TipoPoliza.EntradaAjuste);

                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();
                }
                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()
                    };
                }
                PolizaModel.Encabezados = new List <PolizaEncabezadoModel>
                {
                    new PolizaEncabezadoModel
                    {
                        Descripcion    = organizacion.Descripcion,
                        Desplazamiento = 0
                    },
                };
                polizaImpresion.GeneraCabecero(new[] { "100" }, "NombreGanadera");
                PolizaModel.Encabezados = new List <PolizaEncabezadoModel>
                {
                    new PolizaEncabezadoModel
                    {
                        Descripcion    = "Entrada De Almacen por Ajuste",
                        Desplazamiento = 0
                    },
                };
                polizaImpresion.GeneraCabecero(new[] { "100" }, "NombreGanadera");
                PolizaModel.Encabezados = new List <PolizaEncabezadoModel>
                {
                    new PolizaEncabezadoModel
                    {
                        Descripcion =
                            string.Format("{0} {1}", "FECHA:",
                                          almacenMovimiento.FechaMovimiento.ToShortDateString()),
                        Desplazamiento = 0
                    },
                    new PolizaEncabezadoModel
                    {
                        Descripcion =
                            string.Format("{0} {1}", "FOLIO No.",
                                          almacenMovimiento.FolioMovimiento),
                        Desplazamiento = 0
                    },
                };
                polizaImpresion.GeneraCabecero(new[] { "50", "50" }, "Folio");

                GeneraLinea(2);
                polizaImpresion.GeneraCabecero(new[] { "100" }, "Folio");

                GenerarLineasEncabezadoDetalleEntrada();
                GenerarLineasDetalle(ajustesDeInventario);

                polizaImpresion.GenerarDetalles("Detalle");
                polizaImpresion.GenerarLineaEnBlanco("Detalle", 11);
                GeneraLineaTotalDetalle(ajustesDeInventario);
                GeneraLinea(11);
                polizaImpresion.GeneraCabecero(new[] { "100" }, "Detalle");

                GeneraLineaObservaciones(ajustesDeInventario);
                GeneraLinea(2);
                polizaImpresion.GeneraCabecero(new[] { "100" }, "Observaciones");

                polizaImpresion.GenerarLineaEnBlanco();

                GeneraLineaEncabezadoRegistroContable(almacenMovimiento.FolioMovimiento);
                polizaImpresion.GeneraCabecero(new[] { "30", "60", "65", "25", "25" }, "RegistroContable");

                GeneraLineaSubEncabezadoRegistroContable(true, "Código", "Debe", "Haber");
                polizaImpresion.GeneraCabecero(new[] { "30", "60", "65", "25", "25" }, "RegistroContable");

                GeneraLinea(5);
                polizaImpresion.GeneraCabecero(new[] { "100" }, "RegistroContable");

                IList <PolizaInfo> cargos;
                IList <PolizaInfo> abonos;
                GeneraLineaRegistroContable(polizas, out cargos, out abonos);
                polizaImpresion.GenerarRegistroContable("RegistroContable");

                GeneraLinea(5);
                polizaImpresion.GeneraCabecero(new[] { "100" }, "RegistroContable");
                GenerarLineaSumaRegistroContable(polizas, "Total=====>");
                polizaImpresion.GeneraCabecero(new[] { "30", "60", "65", "25", "25" }, "RegistroContable");

                GeneraLinea(5);
                polizaImpresion.GeneraCabecero(new[] { "100" }, "RegistroContable");

                return(polizaImpresion.GenerarArchivo());
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw;
            }
        }
Example #24
0
 /// <summary>
 /// Inicializa el Contexto
 /// </summary>
 private void InicializaContexto()
 {
     Contexto = new OrganizacionInfo();
 }
        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);
        }
Example #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(txtDescripcion.Text))
                {
                    resultado = false;
                    mensaje   = Properties.Resources.OrganizacionEdicion_MsgDescripcionRequerida;
                    txtDescripcion.Focus();
                }
                else if (cmbTipoOrganizacion.SelectedItem == null || Contexto.TipoOrganizacion.TipoOrganizacionID == 0)
                {
                    resultado = false;
                    mensaje   = Properties.Resources.OrganizacionEdicion_MsgTipoOrganizacionRequerida;
                    cmbTipoOrganizacion.Focus();
                }
                else if (cmbIva.SelectedItem == null || Contexto.Iva.IvaID == 0)
                {
                    resultado = false;
                    mensaje   = Properties.Resources.OrganizacionEdicion_MsgIvaRequerida;
                    cmbIva.Focus();
                }
                else
                {
                    int    organizacionId = Extensor.ValorEntero(txtOrganizacionId.Text);
                    string descripcion    = txtDescripcion.Text.Trim();

                    if (skAyudaZona.Clave != string.Empty && !skAyudaZona.Clave.Equals("0"))
                    {
                        Contexto.Zona.ZonaID = Convert.ToInt32(skAyudaZona.Clave);
                    }
                    else
                    {
                        Contexto.Zona.ZonaID = null;
                    }


                    var organizacionPL            = new OrganizacionPL();
                    OrganizacionInfo organizacion = organizacionPL.ObtenerPorDescripcion(descripcion);

                    if (organizacion != null && (organizacionId == 0 || organizacionId != organizacion.OrganizacionID))
                    {
                        resultado = false;
                        mensaje   = string.Format(Properties.Resources.OrganizacionEdicion_MsgDescripcionExistente,
                                                  organizacion.OrganizacionID);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }

            if (!string.IsNullOrWhiteSpace(mensaje))
            {
                SkMessageBox.Show(this, mensaje, MessageBoxButton.OK, MessageImage.Warning);
            }

            return(resultado);
        }
Example #27
0
        public override MemoryStream ImprimePoliza(object datosPoliza, IList <PolizaInfo> polizas)
        {
            try
            {
                PolizaModel     = new PolizaModel();
                polizaImpresion = new PolizaImpresion <PolizaModel>(PolizaModel, TipoPoliza.SalidaMuerte);

                var costosAnimal        = datosPoliza as List <AnimalCostoInfo>;
                var animalCostoAgrupado = (from costo in costosAnimal
                                           group costo by new { costo.AnimalID, costo.CostoID }
                                           into agrupado
                                           select new AnimalCostoInfo
                {
                    AnimalID = agrupado.Key.AnimalID,
                    Arete = agrupado.Select(ani => ani.Arete).FirstOrDefault(),
                    CostoID = agrupado.Key.CostoID,
                    Importe = agrupado.Sum(cos => cos.Importe),
                    FolioReferencia =
                        agrupado.Select(cos => cos.FolioReferencia).FirstOrDefault(),
                    FechaCosto = agrupado.Select(cos => cos.FechaCosto).FirstOrDefault(),
                    OrganizacionID = agrupado.Select(org => org.OrganizacionID).FirstOrDefault()
                }).ToList();
                costosAnimal = animalCostoAgrupado;

                long     folioVenta     = Convert.ToInt64(costosAnimal.Select(folio => folio.Arete).FirstOrDefault());
                int      organizacionID = costosAnimal.Select(org => org.OrganizacionID).FirstOrDefault();
                DateTime fechaVenta     = DateTime.Today;

                OrganizacionInfo organizacionOrigen = ObtenerOrganizacionIVA(organizacionID);
                PolizaModel.Encabezados = new List <PolizaEncabezadoModel>
                {
                    new PolizaEncabezadoModel
                    {
                        Descripcion    = organizacionOrigen.Descripcion,
                        Desplazamiento = 0
                    },
                };
                polizaImpresion.GeneraCabecero(new[] { "100" }, "NombreGanadera");
                PolizaModel.Encabezados = new List <PolizaEncabezadoModel>
                {
                    new PolizaEncabezadoModel
                    {
                        Descripcion    = "Salida De Ganado x Muerte",
                        Desplazamiento = 0
                    },
                };
                polizaImpresion.GeneraCabecero(new[] { "100" }, "NombreGanadera");
                PolizaModel.Encabezados = new List <PolizaEncabezadoModel>
                {
                    new PolizaEncabezadoModel
                    {
                        Descripcion    = string.Format("{0} {1}", "FECHA:", fechaVenta.ToShortDateString()),
                        Desplazamiento = 0
                    },
                    new PolizaEncabezadoModel
                    {
                        Descripcion =
                            string.Format("{0} {1}", "FOLIO No.",
                                          folioVenta),
                        Desplazamiento = 0
                    },
                };
                polizaImpresion.GeneraCabecero(new[] { "50", "50" }, "Folio");
                polizaImpresion.GenerarLineaEnBlanco("Folio", 2);

                PolizaModel.Encabezados = new List <PolizaEncabezadoModel>
                {
                    new PolizaEncabezadoModel
                    {
                        Descripcion =
                            string.Format("{0}:{1}", "REFERENCIA",
                                          organizacionOrigen.Descripcion),
                    },
                    new PolizaEncabezadoModel
                    {
                        Descripcion =
                            string.Format("{0}:{1}", "FECHA",
                                          fechaVenta.ToShortDateString()),
                    },
                };
                polizaImpresion.GeneraCabecero(new[] { "50", "50" }, "FECHA");
                GeneraLinea(2);
                polizaImpresion.GeneraCabecero(new[] { "50", "50" }, "FECHA");

                GeneraLineaEncabezadoDetalle();
                var               tipoGanadoBL = new TipoGanadoBL();
                List <long>       animalId     = costosAnimal.Select(id => id.AnimalID).Distinct().ToList();
                List <AnimalInfo> animales     = animalId.Select(ani => new AnimalInfo
                {
                    AnimalID = ani
                }).Distinct().ToList();
                List <ContenedorTipoGanadoPoliza> tipoGanadoPolizas = tipoGanadoBL.ObtenerTipoPorAnimal(animales,
                                                                                                        TipoMovimiento.
                                                                                                        Muerte);
                List <ContenedorVentaGanado> ventasGanado = costosAnimal
                                                            .Select(venta => new ContenedorVentaGanado
                {
                    CausaPrecio        = new CausaPrecioInfo(),
                    VentaGanado        = new VentaGanadoInfo(),
                    VentaGanadoDetalle = new VentaGanadoDetalleInfo
                    {
                        Animal = new AnimalInfo
                        {
                            AnimalID = venta.AnimalID
                        }
                    }
                }).ToList();
                GeneraLineasDetalle(tipoGanadoPolizas, costosAnimal, ventasGanado);
                GeneraLinea(12);
                polizaImpresion.GeneraCabecero(new[] { "100" }, "Detalle");

                GeneraLineaEncabezadoCostos();
                polizaImpresion.GeneraCabecero(new[] { "30", "20", "20", "5", "40" }, "Costos");
                GeneraLineaCostos(costosAnimal, string.Empty);
                polizaImpresion.GeneraCostos("Costos");

                GeneraLineaCostosTotales();
                polizaImpresion.GeneraCabecero(new[] { "30", "20", "20", "5", "40" }, "Costos");
                GeneraLineaTotalCostos(costosAnimal);

                GeneraLinea(5);
                polizaImpresion.GeneraCabecero(new[] { "100" }, "Costos");
                polizaImpresion.GenerarLineaEnBlanco();

                GeneraLineaEncabezadoRegistroContable(folioVenta);
                polizaImpresion.GeneraCabecero(new[] { "30", "60", "65", "25", "25" }, "RegistroContable");

                GeneraLineaSubEncabezadoRegistroContable(false, "No DE CUENTA", "CARGOS", "ABONOS");
                polizaImpresion.GeneraCabecero(new[] { "30", "60", "65", "25", "25" }, "RegistroContable");

                IList <PolizaInfo> cargos;
                IList <PolizaInfo> abonos;
                GeneraLineaRegistroContable(polizas, out cargos, out abonos);
                polizaImpresion.GenerarRegistroContable("RegistroContable");

                GeneraLinea(5);
                polizaImpresion.GeneraCabecero(new[] { "100" }, "RegistroContable");
                GenerarLineaSumaRegistroContable(polizas, "*= SUMAS -=>");
                polizaImpresion.GeneraCabecero(new[] { "30", "60", "65", "25", "25" }, "RegistroContable");

                GeneraLinea(5);
                polizaImpresion.GeneraCabecero(new[] { "100" }, "RegistroContable");

                return(polizaImpresion.GenerarArchivo());
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw;
            }
        }
Example #28
0
 internal List <AlmacenInventarioInfo> ObtenerProductosAlmacenInventario(AlmacenInfo almacen, OrganizacionInfo organizacion)
 {
     try
     {
         Logger.Info();
         var almacenDAL = new AlmacenDAL();
         List <AlmacenInventarioInfo> resultado = almacenDAL.ObtenerProductosAlmacenInventario(almacen, organizacion);
         return(resultado);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Example #29
0
        /// <summary>
        /// Método obtener el reporte Operacion de Sanidad
        /// </summary>
        /// <param name="encabezado"></param>
        /// <param name="organizacion"></param>
        /// <returns></returns>
        private List <ReporteDetalleCorteModel> ObtenerReporteDetalleCorte(ReporteEncabezadoInfo encabezado, OrganizacionInfo organizacion)
        {
            try
            {
                var reporteDetalleCortePl = new ReporteDetalleCortePL();

                DateTime fechaIni = DtpFechaInicial.SelectedDate.HasValue
                                        ? DtpFechaInicial.SelectedDate.Value
                                        : new DateTime();
                DateTime fechaFin = DtpFechaFinal.SelectedDate.HasValue
                                        ? DtpFechaFinal.SelectedDate.Value
                                        : fechaIni;

                int idUsuario = AuxConfiguracion.ObtenerUsuarioLogueado();

                List <ReporteDetalleCorteModel> resultadoInfo = reporteDetalleCortePl.ObtenerReporteDetalleCorte(encabezado, organizacion.OrganizacionID, fechaIni, fechaFin, idUsuario, TipoMovimiento.Corte.GetHashCode());

                return(resultadoInfo);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
Example #30
0
        /// <summary>
        /// Genera Incidencias SIAP
        /// </summary>
        internal void GenerarIncidenciasSIAP()
        {
            try
            {
                List <IncidenciasInfo> listaIncidencias       = new List <IncidenciasInfo>();
                List <IncidenciasInfo> listaNuevasIncidencias = new List <IncidenciasInfo>();
                List <XDocument>       listaNew = new List <XDocument>();
                var usuarioBL = new UsuarioBL();
                usuario = usuarioBL.ObtenerPorActiveDirectory(UsuarioProcesosEnum.AlertaSIAP.ToString());

                IList <OrganizacionInfo> ListaOrganizacion = new List <OrganizacionInfo>();
                var organizacionBL = new OrganizacionBL();
                ListaOrganizacion = organizacionBL.ObtenerTodos();

                var IncidenciasDal = new IncidenciasDAL();
                listaAlertaConfiguracion = IncidenciasDal.ObtenerConfiguracionAlertas(EstatusEnum.Activo);
                listaIncidencias         = ObtenerIncidenciasActivas();


                if (listaAlertaConfiguracion != null && listaAlertaConfiguracion.Any())
                {
                    foreach (AlertaInfo alertaInfo in listaAlertaConfiguracion)
                    {
                        List <XDocument> listaNueva = new List <XDocument>();
                        string           query      = CrearQuery(alertaInfo.ConfiguracionAlerta);

                        XDocument resultadoQuery = IncidenciasDal.EjecutarQuery(query);

                        if (resultadoQuery != null)
                        {
                            if (resultadoQuery.Root != null)
                            {
                                var result = resultadoQuery.Root.Elements().ToList();
                                listaNueva.AddRange(result.Select(xElement => XDocument.Parse(xElement.ToString())));
                            }

                            if (listaIncidencias != null && listaIncidencias.Any())
                            {
                                List <XDocument> listaRegistrada = new List <XDocument>();
                                var incidencias =
                                    listaIncidencias.Where(x => x.Alerta.AlertaID == alertaInfo.AlertaID).ToList();
                                listaRegistrada.AddRange(incidencias.Select(incidenciasInfo => XDocument.Parse(incidenciasInfo.XmlConsulta.ToString())));

                                if (incidencias.Any())
                                {
                                    List <XDocument> registradas = new List <XDocument>();

                                    foreach (var xDocument in listaRegistrada)
                                    {
                                        var xdocumetCopy = new XDocument
                                                           (
                                            new XElement("Table",
                                                         from row in xDocument.Root.Elements()
                                                         select new XElement(row.Name, row.Value)));

                                        foreach (var document in listaNueva.Where(document => XNode.DeepEquals(xdocumetCopy, document)))
                                        {
                                            listaNew.Add(document);
                                            registradas.Add(xDocument);
                                        }
                                    }
                                    if (alertaInfo.TerminadoAutomatico == EstatusEnum.Activo)
                                    {
                                        listaRegistrada = listaRegistrada.Except(registradas).ToList();


                                        if (listaRegistrada != null && listaRegistrada.Any())
                                        {
                                            foreach (IncidenciasInfo incidencia in listaRegistrada
                                                     .Select(xDocument => incidencias.FirstOrDefault(x => XNode.DeepEquals(x.XmlConsulta, xDocument)))
                                                     .Where(incidencia => incidencia != null).Where(incidencia => incidencia.Estatus.EstatusId != Estatus.CerrarAler.GetHashCode()))
                                            {
                                                CerrarIncidenciaAutomatico(incidencia);
                                            }
                                        }
                                    }

                                    listaNueva = listaNueva.Except(listaNew).ToList();
                                }
                            }

                            if (listaNueva.Any())
                            {
                                foreach (var xDocument in listaNueva)
                                {
                                    int organizacionID = 0;


                                    foreach (var xElement in xDocument.Root.Elements())
                                    {
                                        if (xElement.Name.ToString().ToUpper() ==
                                            "OrganizacionID".ToUpper())
                                        {
                                            int xElementOrganizacionID;
                                            if (int.TryParse(xElement.Value, out xElementOrganizacionID))
                                            {
                                                OrganizacionInfo organizacion =
                                                    ListaOrganizacion.FirstOrDefault(o => o.OrganizacionID == (int.Parse(xElement.Value)) &&
                                                                                     o.TipoOrganizacion.TipoOrganizacionID == TipoOrganizacion.Ganadera.GetHashCode());
                                                if (organizacion != null)
                                                {
                                                    organizacionID = organizacion.OrganizacionID;
                                                }
                                            }
                                            break;
                                        }
                                        if (xElement.Name.ToString().ToUpper() ==
                                            "Nombre_Del_Centro".ToUpper())
                                        {
                                            OrganizacionInfo organizacion =
                                                ListaOrganizacion.FirstOrDefault(o => o.Descripcion.ToUpper() ==
                                                                                 (xElement.Value.ToUpper()));

                                            organizacion =
                                                ListaOrganizacion.FirstOrDefault(
                                                    o =>
                                                    organizacion != null &&
                                                    o.Division.ToUpper() == organizacion.Division.ToUpper() && o.TipoOrganizacion.TipoOrganizacionID == TipoOrganizacion.Ganadera.GetHashCode());
                                            if (organizacion != null)
                                            {
                                                organizacionID = organizacion.OrganizacionID;
                                            }
                                            break;
                                        }
                                    }

                                    IncidenciasInfo incidenciasInfo = new IncidenciasInfo
                                    {
                                        Organizacion = new OrganizacionInfo
                                        {
                                            OrganizacionID = organizacionID
                                        },

                                        Alerta = new AlertaInfo
                                        {
                                            AlertaID            = alertaInfo.AlertaID,
                                            HorasRespuesta      = alertaInfo.HorasRespuesta,
                                            ConfiguracionAlerta = new ConfiguracionAlertasInfo
                                            {
                                                NivelAlerta = new NivelAlertaInfo
                                                {
                                                    NivelAlertaId = alertaInfo.ConfiguracionAlerta.NivelAlerta.NivelAlertaId
                                                }
                                            }
                                        },
                                        XmlConsulta = xDocument,
                                        Estatus     = new EstatusInfo
                                        {
                                            EstatusId = Estatus.NuevaAlert.GetHashCode()
                                        },
                                        UsuarioCreacionID = usuario.UsuarioID,
                                        Activo            = EstatusEnum.Activo
                                    };
                                    listaNuevasIncidencias.Add(incidenciasInfo);
                                }
                            }
                        }
                    }
                }

                using (var transaction = new TransactionScope())
                {
                    if (listaNuevasIncidencias.Any())
                    {
                        GuardarNuevasIncidencias(listaNuevasIncidencias, TipoFolio.AlertaSiap.GetHashCode());
                    }

                    ProcesarIncicencias();

                    transaction.Complete();
                }
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }