コード例 #1
0
        /// <summary>
        /// Obtiene un flujo de datos
        /// con la poliza de compra
        /// </summary>
        /// <param name="contenedorEntradaMateriaPrima"></param>
        /// <param name="polizaClave"></param>
        /// <returns></returns>
        private MemoryStream ReimpresionPolizaCompra(ContenedorEntradaMateriaPrimaInfo contenedorEntradaMateriaPrima
                                                     , TipoPolizaInfo polizaClave)
        {
            var polizaBL = new PolizaBL();
            IList <PolizaInfo> polizasVenta = polizaBL.ObtenerPoliza(TipoPoliza.EntradaCompra,
                                                                     contenedorEntradaMateriaPrima.Contrato.Organizacion.
                                                                     OrganizacionID,
                                                                     contenedorEntradaMateriaPrima.Contrato.Fecha
                                                                     ,
                                                                     contenedorEntradaMateriaPrima.Contrato.Folio.
                                                                     ToString(),
                                                                     polizaClave.ClavePoliza, 1);
            MemoryStream stream = null;

            if (polizasVenta != null)
            {
                var entradaProductoBL = new EntradaProductoBL();
                contenedorEntradaMateriaPrima =
                    entradaProductoBL.ObtenerPorFolioEntradaContrato(contenedorEntradaMateriaPrima.Contrato.Folio,
                                                                     contenedorEntradaMateriaPrima.Contrato.ContratoId,
                                                                     contenedorEntradaMateriaPrima.Contrato.Organizacion.OrganizacionID);
                var poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.EntradaCompra);
                polizasVenta = poliza.GeneraPoliza(contenedorEntradaMateriaPrima);
                stream       = poliza.ImprimePoliza(contenedorEntradaMateriaPrima, polizasVenta);
            }
            return(stream);
        }
コード例 #2
0
 /// <summary>
 /// Metodo para guardar los costos de una entrada de materia prima
 /// </summary>
 /// <param name="entradaMateriaPrima">Continen todos los datos necesarios para guardar</param>
 /// <returns>Regresa el resultado de la operacion</returns>
 internal bool GuardarEntradaMateriaPrima(ContenedorEntradaMateriaPrimaInfo entradaMateriaPrima)
 {
     try
     {
         Logger.Info();
         var parameters = AuxEntradaMateriaPrimaDAL.ObtenerParametrosPorPaginaTiposProveedores(entradaMateriaPrima);
         Create("EntradaMateriaPrima_Guardar", parameters);
         return(true);
     }
     catch (SqlException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (DataException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
コード例 #3
0
 internal static Dictionary <string, object> ObtenerParametrosCrear(ContenedorEntradaMateriaPrimaInfo contenedorEntradaMateriaPrima)
 {
     try
     {
         Logger.Info();
         var xml =
             new XElement("ROOT",
                          from detalle in contenedorEntradaMateriaPrima.Contrato.ListaContratoParcial.Where(registro => registro.Seleccionado)
                          select new XElement("EntradaProductoParcial",
                                              new XElement("EntradaProductoID", contenedorEntradaMateriaPrima.EntradaProducto.EntradaProductoId),
                                              new XElement("ContratoParcialID", detalle.ContratoParcialId),
                                              new XElement("CantidadEntrante", (int)detalle.CantidadEntrante),
                                              new XElement("UsuarioCreacionID", contenedorEntradaMateriaPrima.UsuarioId)
                                              ));
         var parametros = new Dictionary <string, object>
         {
             { "@XMLEntradaProductoParcial", xml.ToString() }
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
コード例 #4
0
 internal bool Crear(ContenedorEntradaMateriaPrimaInfo contenedorEntradaMateriaPrima)
 {
     try
     {
         Logger.Info();
         Dictionary <string, object> parameters = AuxEntradaProductoParcialDAL.ObtenerParametrosCrear(contenedorEntradaMateriaPrima);
         Create("EntradaProductoParcial_Crear", parameters);
         return(true);
     }
     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);
     }
 }
コード例 #5
0
        /// <summary>
        /// Guarda los costos de la entrada de materia prima
        /// </summary>
        /// <param name="entradaMateriaPrima">Contiene todos los datos necesarios para guardar los costos</param>
        /// <returns></returns>
        public MemoryStream GuardarEntradaMateriaPrima(ContenedorEntradaMateriaPrimaInfo entradaMateriaPrima)
        {
            MemoryStream resultado;

            try
            {
                Logger.Info();
                var EntradaMateriaPrimaBl = new EntradaMateriaPrimaBL();
                resultado = EntradaMateriaPrimaBl.GuardarEntradaMateriaPrima(entradaMateriaPrima);
            }
            catch (ExcepcionServicio)
            {
                throw;
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(resultado);
        }
コード例 #6
0
 public EntradaMateriaPrimaComprasParciales(ContenedorEntradaMateriaPrimaInfo contenedorEnviado)
 {
     InitializeComponent();
     contenedor        = contenedorEnviado;
     contenedorRetorno = contenedorEnviado;
     MostrarDatosGrid();
     if (contenedorRetorno.Contrato.ListaContratoParcial == null)
     {
         contenedorRetorno.Contrato.ListaContratoParcial = new List <ContratoParcialInfo>();
     }
 }
コード例 #7
0
        /// <summary>
        /// Obtiene un contenedor de Entrada de Materia Prima
        /// </summary>
        /// <param name="folioEntrada"></param>
        /// <param name="contratoId"></param>
        /// <param name="organizacionID"></param>
        /// <returns></returns>
        internal ContenedorEntradaMateriaPrimaInfo ObtenerPorFolioEntradaContrato(int folioEntrada, int contratoId, int organizacionID)
        {
            ContenedorEntradaMateriaPrimaInfo resultado = null;

            try
            {
                Dictionary <string, object> parametros =
                    AuxEntradaProductoDAL.ObtenerParametrosFolioEntradaContrato(folioEntrada, contratoId, organizacionID);
                DataSet ds = Retrieve("EntradaProducto_ObtenerFolioEntradaContrato", parametros);
                if (ValidateDataSet(ds))
                {
                    resultado = MapEntradaProductoDAL.ObtenerPorFolioEntradaContrato(ds);
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(resultado);
        }
コード例 #8
0
        /// <summary>
        /// Obtiene los costos de los fletes por contrato
        /// </summary>
        /// <param name="contenedorMateriaPrima"></param>
        /// <param name="pesosCostos">Kilos de la entrada</param>
        /// <returns></returns>
        public List <CostoEntradaMateriaPrimaInfo> ObtenerCostosFletes(ContenedorEntradaMateriaPrimaInfo contenedorMateriaPrima, CostoEntradaMateriaPrimaInfo pesosCostos)
        {
            List <CostoEntradaMateriaPrimaInfo> resultado;

            try
            {
                Logger.Info();
                var EntradaMateriaPrimaBl = new EntradaMateriaPrimaBL();
                resultado = EntradaMateriaPrimaBl.ObtenerCostosFletes(contenedorMateriaPrima, pesosCostos);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(resultado);
        }
コード例 #9
0
        internal bool Crear(ContenedorEntradaMateriaPrimaInfo contenedorEntradaMateriaPrima)
        {
            bool regreso = true;

            try
            {
                var entradaProductoParcialDal = new EntradaProductoParcialDAL();
                regreso = entradaProductoParcialDal.Crear(contenedorEntradaMateriaPrima);
            }
            catch (ExcepcionGenerica)
            {
                regreso = false;
                throw;
            }
            catch (Exception ex)
            {
                regreso = false;
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }

            return(regreso);
        }
コード例 #10
0
        private IList <PolizaInfo> ObtenerPoliza(ContenedorEntradaMateriaPrimaInfo premezcla)
        {
            var polizaPremezcla = new List <PolizaInfo>();

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

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

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

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

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

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

            ProductoInfo         producto;
            PremezclaDetalleInfo premezclaDetalle;
            DatosPolizaInfo      datos;

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

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

            var ref3 = new StringBuilder();

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

            string archivoFolio = ObtenerArchivoFolio(fecha);
            string unidad;

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

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

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

                producto = premezclaDetalle.Producto;

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

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

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

            var productoBL = new ProductoBL();

            producto = productoBL.ObtenerPorID(producto);

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

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

            return(polizaPremezcla);
        }
コード例 #11
0
        /// <summary>
        /// Metodo para obtener los parametros para guardar los costos de entrada de materia prima
        /// </summary>
        /// <param name="entradaMateriaPrima">Contiene los datos necesarios para guardar</param>
        /// <returns></returns>
        internal static Dictionary <string, object> ObtenerParametrosPorPaginaTiposProveedores(ContenedorEntradaMateriaPrimaInfo entradaMateriaPrima)
        {
            Dictionary <string, object> parametros;

            try
            {
                Logger.Info();

                var element = new XElement("ROOT",
                                           from costo in entradaMateriaPrima.ListaCostoEntradaMateriaPrima
                                           select new XElement("Datos",
                                                               new XElement("EntradaProductoID",
                                                                            entradaMateriaPrima.EntradaProducto.EntradaProductoId),
                                                               new XElement("CostoID", costo.Costos.CostoID),
                                                               new XElement("TieneCuenta",
                                                                            costo.TieneCuenta),
                                                               new XElement("ProveedorID",
                                                                            costo.Provedor == null ? 0 : costo.Provedor.ProveedorID),
                                                               new XElement("CuentaProvision",
                                                                            costo.CuentaSap),
                                                               new XElement("Importe",
                                                                            costo.Importe),
                                                               new XElement("Iva",
                                                                            costo.Iva),
                                                               new XElement("Retencion",
                                                                            costo.Retencion),
                                                               new XElement("TipoEntrada",
                                                                            entradaMateriaPrima.TipoEntrada),
                                                               new XElement("Observaciones",
                                                                            entradaMateriaPrima.Observaciones)
                                                               ));

                parametros = new Dictionary <string, object>
                {
                    { "@UsuarioID", entradaMateriaPrima.UsuarioId },
                    { "@Activo", EstatusEnum.Activo.GetHashCode() },
                    { "@xmlTipoCuenta", element.ToString() },
                };
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(parametros);
        }