/// <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); }
/// <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); } }
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); } }
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); } }
/// <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); }
public EntradaMateriaPrimaComprasParciales(ContenedorEntradaMateriaPrimaInfo contenedorEnviado) { InitializeComponent(); contenedor = contenedorEnviado; contenedorRetorno = contenedorEnviado; MostrarDatosGrid(); if (contenedorRetorno.Contrato.ListaContratoParcial == null) { contenedorRetorno.Contrato.ListaContratoParcial = new List <ContratoParcialInfo>(); } }
/// <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); }
/// <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); }
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); }
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); }
/// <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); }