/// <summary> /// Obtiene un trapaso de materia prima por su folio /// </summary> /// <param name="filtro"></param> /// <returns></returns> public TraspasoMpPaMedInfo ObtenerPorFolioTraspaso(FiltroTraspasoMpPaMed filtro) { try { Dictionary <string, object> parameters = AuxTraspasoMateriaPrimaDAL.ObtenerParametrosPorFolio(filtro); DataSet ds = Retrieve("TraspasoMateriaPrima_ObtenerPorFolio", parameters); TraspasoMpPaMedInfo result = null; if (ValidateDataSet(ds)) { result = MapTraspasoMateriaPrimaDAL.ObtenerPorFolio(ds); } return(result); } catch (SqlException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (DataException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Inicializa el Contexto /// </summary> private void InicializaContexto() { Contexto = new TraspasoMpPaMedInfo { OrganizacionOrigen = new OrganizacionInfo { TipoOrganizacion = new TipoOrganizacionInfo { TipoOrganizacionID = TipoOrganizacion.Centro.GetHashCode() } } }; }
/// <summary> /// Método que obtiene un traspaso de materia prima por su folio /// </summary> /// <param name="ds"></param> /// <returns></returns> public static TraspasoMpPaMedInfo ObtenerPorFolio(DataSet ds) { try { var contratoDAL = new ContratoDAL(); var almacenDAL = new AlmacenDAL(); var almacenInventarioLoteDAL = new AlmacenInventarioLoteDAL(); var cuentaSAPDAL = new CuentaSAPDAL(); var productoDAL = new ProductoDAL(); Logger.Info(); DataTable dt = ds.Tables[ConstantesDAL.DtDatos]; TraspasoMpPaMedInfo result = (from info in dt.AsEnumerable() select new TraspasoMpPaMedInfo { TraspasoMateriaPrimaID = info.Field <int>("TraspasoMateriaPrimaID"), ContratoOrigen = info.Field <int?>("ContratoOrigenID") != null ? contratoDAL.ObtenerPorId(new ContratoInfo { ContratoId = info.Field <int>("ContratoOrigenID") }) : new ContratoInfo(), ContratoDestino = info.Field <int?>("ContratoDestinoID") != null ? contratoDAL.ObtenerPorId(new ContratoInfo { ContratoId = info.Field <int>("ContratoDestinoID") }) : new ContratoInfo(), FolioTraspaso = info.Field <long>("FolioTraspaso"), AlmacenOrigen = almacenDAL.ObtenerPorID(info.Field <int>("AlmacenOrigenID")), AlmacenDestino = almacenDAL.ObtenerPorID(info.Field <int>("AlmacenDestinoID")), LoteMpOrigen = info.Field <int?>("InventarioLoteOrigenID") != null ? almacenInventarioLoteDAL.ObtenerAlmacenInventarioLotePorId(info.Field <int>("InventarioLoteOrigenID")) : new AlmacenInventarioLoteInfo(), LoteMpDestino = info.Field <int?>("InventarioLoteDestinoID") != null ? almacenInventarioLoteDAL.ObtenerAlmacenInventarioLotePorId(info.Field <int>("InventarioLoteDestinoID")) : new AlmacenInventarioLoteInfo(), CuentaContable = info.Field <int?>("CuentaSAPID") != null ? cuentaSAPDAL.ObtenerPorID(info.Field <int>("CuentaSAPID")) : new CuentaSAPInfo(), JustificacionDestino = info.Field <string>("Justificacion"), CantidadTraspasarOrigen = info.Field <decimal>("CantidadSalida"), CantidadTraspasarDestino = info.Field <decimal>("CantidadEntrada"), ProductoOrigen = productoDAL.ObtenerPorID(new ProductoInfo { ProductoId = info.Field <int>("ProductoID") }), FechaTraspaso = info.Field <DateTime>("FechaMovimiento") }).First(); return(result); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Inicializa el Contexto /// </summary> private void InicializaContexto() { Contexto = new TraspasoMpPaMedInfo { TipoAlmacenOrigen = new TipoAlmacenInfo { ListaTipoAlmacen = configuracionTraspasoAlmacen.Select(tipo => tipo.TipoAlmacenOrigen.TipoAlmacenID).Distinct().ToList() }, TipoAlmacenDestino = new TipoAlmacenInfo(), OrganizacionOrigen = new OrganizacionInfo { TipoOrganizacion = new TipoOrganizacionInfo { TipoOrganizacionID = TipoOrganizacion.Ganadera.GetHashCode() } }, OrganizacionDestino = new OrganizacionInfo { TipoOrganizacion = new TipoOrganizacionInfo { TipoOrganizacionID = TipoOrganizacion.Ganadera.GetHashCode() } }, AlmacenOrigen = new AlmacenInfo(), AlmacenDestino = new AlmacenInfo(), ProductoOrigen = new ProductoInfo { Familia = new FamiliaInfo() }, ProductoDestino = new ProductoInfo { Familia = new FamiliaInfo() }, ProveedorOrigen = new ProveedorInfo(), ProveedorDestino = new ProveedorInfo(), ContratoOrigen = new ContratoInfo(), ContratoDestino = new ContratoInfo(), LoteMpOrigen = new AlmacenInventarioLoteInfo(), LoteMpDestino = new AlmacenInventarioLoteInfo(), AlmacenInventarioOrigen = new AlmacenInventarioInfo(), AlmacenInventarioDestino = new AlmacenInventarioInfo(), CuentaContable = new CuentaSAPInfo() }; CargarCuentasContables(); }
/// <summary> /// Genera las Lineas del Detalle /// </summary> /// <param name="traspasoMp"></param> private void GeneraLineasDetalle(TraspasoMpPaMedInfo traspasoMp) { PolizaModel.Detalle = new List <PolizaDetalleModel>(); var detalleModel = new PolizaDetalleModel { CantidadCabezas = traspasoMp.ProductoOrigen.ProductoId.ToString(CultureInfo.InvariantCulture), PesoPromedio = string.Empty, TipoGanado = traspasoMp.ProductoOrigen.ProductoDescripcion, PesoTotal = string.Format("{0} {1}.", traspasoMp.CantidadTraspasarOrigen.ToString("N0"), traspasoMp.ProductoOrigen.UnidadMedicion.ClaveUnidad), ImportePromedio = traspasoMp.PrecioTraspasoOrigen.ToString("N2"), PrecioVenta = traspasoMp.ImporteTraspaso.ToString("N2"), }; PolizaModel.Detalle.Add(detalleModel); polizaImpresion.GenerarDetalles("Detalle"); }
/// <summary> /// Genera los totales por Detalle /// </summary> /// <param name="traspasoMp"></param> private void GeneraLineaTotales(TraspasoMpPaMedInfo traspasoMp) { var sumaImporte = traspasoMp.ImporteTraspaso; PolizaModel.Detalle = new List <PolizaDetalleModel>(); var detalleModel = new PolizaDetalleModel { CantidadCabezas = string.Empty, PesoPromedio = string.Empty, TipoGanado = string.Empty, PesoTotal = string.Empty, ImportePromedio = string.Empty, PrecioVenta = sumaImporte.ToString("N2", CultureInfo.CurrentCulture), }; PolizaModel.Detalle.Add(detalleModel); }
/// <summary> /// Obtiene un trapaso de materia prima por su folio /// </summary> /// <param name="filtro"></param> /// <returns></returns> public TraspasoMpPaMedInfo ObtenerPorFolioTraspaso(FiltroTraspasoMpPaMed filtro) { try { Logger.Info(); var traspasoMateriaPrimaDAL = new TraspasoMateriaPrimaDAL(); TraspasoMpPaMedInfo result = traspasoMateriaPrimaDAL.ObtenerPorFolioTraspaso(filtro); return(result); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Consulta un traspaso para su cancelacion por su Folio /// </summary> private void ConsultarTraspasoPorFolio() { try { var traspasoMateriaPrimaBL = new TraspasoMateriaPrimaBL(); if (iudFolio.Value != null) { var filtro = new FiltroTraspasoMpPaMed { Organizacion = new OrganizacionInfo { OrganizacionID = AuxConfiguracion.ObtenerOrganizacionUsuario() }, Folio = iudFolio.Value.Value, Activo = EstatusEnum.Activo }; TraspasoMpPaMedInfo traspasoMp = traspasoMateriaPrimaBL.ObtenerPorFolioTraspaso(filtro); if (traspasoMp == null) { SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.TraspasoMPPAMED_NoSeEncuentraFolio, MessageBoxButton.OK, MessageImage.Error); return; } Contexto = traspasoMp; CargarDatosCancelacion(); } } catch (Exception ex) { Logger.Error(ex); SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.TraspasoMPPAMED_ErrorCargarDatosCancelacion, MessageBoxButton.OK, MessageImage.Error); } }
/// <summary> /// Llama ventana para ayuda de folio de traspaso /// </summary> private void AyudaFolioTraspaso() { try { var traspasoMPPAMEDBusquedaFolio = new TraspasoMPPAMEDBusquedaFolio(); traspasoMPPAMEDBusquedaFolio.InicializaPaginador(); traspasoMPPAMEDBusquedaFolio.Owner = Application.Current.Windows[ConstantesVista.WindowPrincipal]; MostrarCentrado(traspasoMPPAMEDBusquedaFolio); if (traspasoMPPAMEDBusquedaFolio.TraspasoMpPaMed != null) { Contexto = traspasoMPPAMEDBusquedaFolio.TraspasoMpPaMed; iudFolio.Value = Convert.ToInt32(Contexto.FolioTraspaso); CargarDatosCancelacion(); } } catch (Exception ex) { Logger.Error(ex); SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.TraspasoMPPAMED_ErrorCargarAyudaFolios, MessageBoxButton.OK, MessageImage.Error); } }
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); }
private long GenerarMovimientoEntrada(TraspasoMpPaMedInfo info) { var almacenInventarioBL = new AlmacenInventarioBL(); var almacenInventarioLoteBL = new AlmacenInventarioLoteBL(); var almacenMovimientoBL = new AlmacenMovimientoBL(); var almacenMovimientoDetalleBL = new AlmacenMovimientoDetalleBL(); decimal cantidadTraspaso = info.CantidadTraspasarDestino; decimal precioPromedio = 0; List <AlmacenInventarioInfo> inventariosDestino = almacenInventarioBL.ObtienePorAlmacenId(info.AlmacenDestino); if (inventariosDestino != null && inventariosDestino.Any()) { AlmacenInventarioInfo almacenInventarioDestino = inventariosDestino.FirstOrDefault(inv => inv.ProductoID == info.ProductoDestino.ProductoId); if (almacenInventarioDestino != null) { almacenInventarioDestino.Cantidad = almacenInventarioDestino.Cantidad + cantidadTraspaso; almacenInventarioDestino.Importe = almacenInventarioDestino.Importe + info.ImporteTraspaso; almacenInventarioDestino.PrecioPromedio = almacenInventarioDestino.Importe / almacenInventarioDestino.Cantidad; almacenInventarioDestino.UsuarioModificacionID = info.Usuario.UsuarioID; almacenInventarioBL.Actualizar(almacenInventarioDestino); } else { //Crear el Inventario var almacenInventarioGuardar = new AlmacenInventarioInfo { AlmacenID = info.AlmacenDestino.AlmacenID, ProductoID = info.ProductoDestino.ProductoId, Cantidad = cantidadTraspaso, Importe = info.ImporteTraspaso, PrecioPromedio = info.ImporteTraspaso / cantidadTraspaso, UsuarioCreacionID = info.Usuario.UsuarioID }; almacenInventarioBL.Crear(almacenInventarioGuardar); } } else { //Crear el Inventario var almacenInventarioGuardar = new AlmacenInventarioInfo { AlmacenID = info.AlmacenDestino.AlmacenID, ProductoID = info.ProductoDestino.ProductoId, Cantidad = cantidadTraspaso, Importe = info.ImporteTraspaso, PrecioPromedio = info.ImporteTraspaso / cantidadTraspaso, UsuarioCreacionID = info.Usuario.UsuarioID }; almacenInventarioBL.Crear(almacenInventarioGuardar); } if (info.LoteMpDestino.AlmacenInventarioLoteId != 0) { AlmacenInventarioLoteInfo loteDestino = almacenInventarioLoteBL.ObtenerAlmacenInventarioLotePorId(info.LoteMpDestino.AlmacenInventarioLoteId); if (loteDestino != null) { loteDestino.Cantidad = loteDestino.Cantidad + cantidadTraspaso; loteDestino.Importe = loteDestino.Importe + info.ImporteTraspaso; loteDestino.PrecioPromedio = loteDestino.Importe / loteDestino.Cantidad; loteDestino.UsuarioModificacionId = info.Usuario.UsuarioID; almacenInventarioLoteBL.Actualizar(loteDestino); } } var almacenMovimientoDestino = new AlmacenMovimientoInfo { AlmacenID = info.AlmacenDestino.AlmacenID, TipoMovimientoID = TipoMovimiento.EntradaAlmacen.GetHashCode(), ProveedorId = info.ProveedorDestino.ProveedorID, Status = Estatus.AplicadoInv.GetHashCode(), UsuarioCreacionID = info.Usuario.UsuarioID, Observaciones = info.JustificacionDestino }; long almacenMovimientoID = almacenMovimientoBL.Crear(almacenMovimientoDestino); precioPromedio = info.ImporteTraspaso / info.CantidadTraspasarDestino; var almacenMovimientoDetalleInfo = new AlmacenMovimientoDetalle { AlmacenMovimientoID = almacenMovimientoID, //ContratoId = info.ContratoDestino.ContratoId, AlmacenInventarioLoteId = info.LoteMpDestino.AlmacenInventarioLoteId, Piezas = 0, ProductoID = info.ProductoDestino.ProductoId, Precio = precioPromedio, Cantidad = cantidadTraspaso, Importe = info.ImporteTraspaso, UsuarioCreacionID = info.Usuario.UsuarioID }; almacenMovimientoDetalleBL.Crear(almacenMovimientoDetalleInfo); return(almacenMovimientoID); }
private long GenerarMovimientoSalida(TraspasoMpPaMedInfo info) { var almacenInventarioBL = new AlmacenInventarioBL(); var almacenInventarioLoteBL = new AlmacenInventarioLoteBL(); var almacenMovimientoBL = new AlmacenMovimientoBL(); var almacenMovimientoDetalleBL = new AlmacenMovimientoDetalleBL(); decimal cantidadTraspaso = info.CantidadTraspasarOrigen; List <AlmacenInventarioInfo> inventariosOrigen = almacenInventarioBL.ObtienePorAlmacenId(info.AlmacenOrigen); AlmacenInventarioInfo almacenInventarioOrigen = null; decimal precioPromedio = 0; decimal importe = 0; if (inventariosOrigen != null && inventariosOrigen.Any()) { almacenInventarioOrigen = inventariosOrigen.FirstOrDefault(inv => inv.ProductoID == info.ProductoOrigen.ProductoId); if (almacenInventarioOrigen != null) { almacenInventarioOrigen.Cantidad = almacenInventarioOrigen.Cantidad - cantidadTraspaso; almacenInventarioOrigen.Importe = almacenInventarioOrigen.Importe - Math.Round(cantidadTraspaso * almacenInventarioOrigen.PrecioPromedio, 2); if (almacenInventarioOrigen.Importe < 0) { almacenInventarioOrigen.Importe = 0; } if (almacenInventarioOrigen.Cantidad > 0) { almacenInventarioOrigen.PrecioPromedio = almacenInventarioOrigen.Importe / almacenInventarioOrigen.Cantidad; } almacenInventarioOrigen.UsuarioModificacionID = info.Usuario.UsuarioID; almacenInventarioBL.Actualizar(almacenInventarioOrigen); precioPromedio = almacenInventarioOrigen.PrecioPromedio; importe = precioPromedio * cantidadTraspaso; } } if (info.LoteMpOrigen.AlmacenInventarioLoteId != 0) { AlmacenInventarioLoteInfo loteOrigen = almacenInventarioLoteBL.ObtenerAlmacenInventarioLotePorId(info.LoteMpOrigen.AlmacenInventarioLoteId); if (loteOrigen != null) { loteOrigen.Cantidad = loteOrigen.Cantidad - cantidadTraspaso; loteOrigen.Importe = loteOrigen.Importe - Math.Round(cantidadTraspaso * loteOrigen.PrecioPromedio, 2); if (loteOrigen.Importe < 0) { loteOrigen.Importe = 0; } if (loteOrigen.Cantidad > 0) { loteOrigen.PrecioPromedio = loteOrigen.Importe / loteOrigen.Cantidad; } loteOrigen.UsuarioModificacionId = info.Usuario.UsuarioID; almacenInventarioLoteBL.Actualizar(loteOrigen); precioPromedio = loteOrigen.PrecioPromedio; importe = precioPromedio * cantidadTraspaso; } } var almacenMovimientoOrigen = new AlmacenMovimientoInfo { AlmacenID = info.AlmacenOrigen.AlmacenID, TipoMovimientoID = TipoMovimiento.ProductoSalidaTraspaso.GetHashCode(), ProveedorId = info.ProveedorOrigen.ProveedorID, Status = Estatus.AplicadoInv.GetHashCode(), UsuarioCreacionID = info.Usuario.UsuarioID, Observaciones = info.JustificacionDestino }; long almacenMovimientoID = almacenMovimientoBL.Crear(almacenMovimientoOrigen); if (almacenInventarioOrigen != null) { var almacenMovimientoDetalleInfo = new AlmacenMovimientoDetalle { AlmacenMovimientoID = almacenMovimientoID, AlmacenInventarioLoteId = info.LoteMpOrigen.AlmacenInventarioLoteId, Piezas = 0, ProductoID = info.ProductoOrigen.ProductoId, Precio = precioPromedio, Cantidad = cantidadTraspaso, Importe = importe, UsuarioCreacionID = info.Usuario.UsuarioID }; almacenMovimientoDetalleBL.Crear(almacenMovimientoDetalleInfo); } info.ImporteTraspaso = importe; return(almacenMovimientoID); }
/// <summary> /// Metodo para Guardar/Modificar una entidad TraspasoMateriaPrima /// </summary> /// <param name="info"></param> public Dictionary <long, MemoryStream> GuardarTraspaso(TraspasoMpPaMedInfo info) { try { var resultado = new Dictionary <long, MemoryStream>(); Logger.Info(); var traspasoMateriaPrimaDAL = new TraspasoMateriaPrimaDAL(); using (var transaction = new TransactionScope()) { long almacenMovimientoOrigenID = GenerarMovimientoSalida(info); long almacenMovimientoDestinoID = GenerarMovimientoEntrada(info); var traspasoMateriaPrimaGuardar = new TraspasoMateriaPrimaInfo { ContratoOrigen = info.ContratoOrigen, ContratoDestino = info.ContratoDestino, Organizacion = info.Usuario.Organizacion, AlmacenOrigen = info.AlmacenOrigen, AlmacenDestino = info.AlmacenDestino, AlmacenInventarioLoteOrigen = info.LoteMpOrigen, AlmacenInventarioLoteDestino = info.LoteMpDestino, CuentaSAP = info.CuentaContable, Justificacion = info.JustificacionDestino, AlmacenMovimientoOrigen = new AlmacenMovimientoInfo { AlmacenMovimientoID = almacenMovimientoOrigenID }, AlmacenMovimientoDestino = new AlmacenMovimientoInfo { AlmacenMovimientoID = almacenMovimientoDestinoID }, Activo = EstatusEnum.Activo, UsuarioCreacionID = info.Usuario.UsuarioID }; traspasoMateriaPrimaGuardar = traspasoMateriaPrimaDAL.Crear(traspasoMateriaPrimaGuardar); info.FolioTraspaso = traspasoMateriaPrimaGuardar.FolioTraspaso; info.FechaTraspaso = traspasoMateriaPrimaGuardar.FechaMovimiento; info.AlmacenMovimientoID = almacenMovimientoDestinoID; MemoryStream pdfPoliza = null; if (info.AlmacenOrigen.AlmacenID != info.AlmacenDestino.AlmacenID) { var productoBL = new ProductoBL(); info.ProductoOrigen = productoBL.ObtenerPorID(info.ProductoOrigen); info.ProductoDestino = info.ProductoOrigen; PolizaAbstract poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.EntradaTraspaso); IList <PolizaInfo> listaPolizas = poliza.GeneraPoliza(info); pdfPoliza = poliza.ImprimePoliza(info, listaPolizas); if (listaPolizas != null && listaPolizas.Any()) { listaPolizas.ToList().ForEach(datos => { datos.OrganizacionID = info.Usuario.Organizacion.OrganizacionID; datos.UsuarioCreacionID = info.Usuario.UsuarioID; datos.Activo = EstatusEnum.Activo; datos.ArchivoEnviadoServidor = 1; }); var polizaDAL = new PolizaDAL(); polizaDAL.CrearServicioPI(listaPolizas, TipoPoliza.EntradaTraspaso); } } transaction.Complete(); resultado.Add(info.FolioTraspaso, pdfPoliza); return(resultado); } } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Metodo para Cancelar un traspaso de MP /// </summary> /// <param name="info"></param> public Dictionary <long, MemoryStream> CancelarTraspaso(TraspasoMpPaMedInfo info) { try { var resultado = new Dictionary <long, MemoryStream>(); Logger.Info(); var traspasoMateriaPrimaDAL = new TraspasoMateriaPrimaDAL(); var almacenMovimientoBL = new AlmacenMovimientoBL(); var cancelacionMovimientoBL = new CancelacionMovimientoBL(); TraspasoMateriaPrimaInfo traspasoCancelar = traspasoMateriaPrimaDAL.ObtenerPorID(info.TraspasoMateriaPrimaID); if (traspasoCancelar == null) { return(null); } AlmacenMovimientoInfo movimientoOrigen = almacenMovimientoBL.ObtenerPorIDCompleto( traspasoCancelar.AlmacenMovimientoOrigen.AlmacenMovimientoID); AlmacenMovimientoInfo movimientoDestino = almacenMovimientoBL.ObtenerPorIDCompleto( traspasoCancelar.AlmacenMovimientoDestino.AlmacenMovimientoID); AlmacenInfo almacenOrigenAux = info.AlmacenOrigen; AlmacenInfo almacenDestinoAux = info.AlmacenDestino; AlmacenMovimientoDetalle detalleOrigen = movimientoOrigen.ListaAlmacenMovimientoDetalle.FirstOrDefault(); AlmacenMovimientoDetalle detalleDestino = movimientoDestino.ListaAlmacenMovimientoDetalle.FirstOrDefault(); if (detalleOrigen == null || detalleDestino == null) { return(null); } info.CantidadTraspasarOrigen = detalleOrigen.Cantidad; info.CantidadTraspasarDestino = detalleDestino.Cantidad; info.PrecioTraspasoOrigen = detalleOrigen.Precio; info.PrecioTraspasoDestino = detalleDestino.Precio; info.ImporteTraspaso = detalleDestino.Importe; info.AlmacenDestino = almacenOrigenAux; info.AlmacenOrigen = almacenDestinoAux; using (var transaction = new TransactionScope()) { long almacenMovimientoEntradaID = 0; long almacenMovimientoSalidaID = 0; if (movimientoDestino != null) { almacenMovimientoEntradaID = GenerarMovimientoEntradaCancelacion(movimientoDestino, info.Usuario); almacenMovimientoSalidaID = GenerarMovimientoSalidaCancelacion(movimientoOrigen, info.Usuario); } var cancelacionMovimientoEntrada = new CancelacionMovimientoInfo { TipoCancelacion = new TipoCancelacionInfo { TipoCancelacionId = TipoCancelacionEnum.TraspasoMpPaMed.GetHashCode() }, Pedido = new PedidoInfo(), AlmacenMovimientoOrigen = new AlmacenMovimientoInfo { AlmacenMovimientoID = almacenMovimientoEntradaID }, AlmacenMovimientoCancelado = new AlmacenMovimientoInfo { AlmacenMovimientoID = movimientoOrigen.AlmacenMovimientoID }, Activo = EstatusEnum.Activo, Justificacion = traspasoCancelar.Justificacion, UsuarioCreacionID = info.Usuario.UsuarioID }; CancelacionMovimientoInfo movimientoCancelado = cancelacionMovimientoBL.Guardar(cancelacionMovimientoEntrada); if (movimientoDestino != null) { var cancelacionMovimientoSalida = new CancelacionMovimientoInfo { TipoCancelacion = new TipoCancelacionInfo { TipoCancelacionId = TipoCancelacionEnum.TraspasoMpPaMed.GetHashCode() }, Pedido = new PedidoInfo(), AlmacenMovimientoOrigen = new AlmacenMovimientoInfo { AlmacenMovimientoID = almacenMovimientoSalidaID }, AlmacenMovimientoCancelado = new AlmacenMovimientoInfo { AlmacenMovimientoID = movimientoDestino.AlmacenMovimientoID }, Activo = EstatusEnum.Activo, Justificacion = traspasoCancelar.Justificacion, UsuarioCreacionID = info.Usuario.UsuarioID }; cancelacionMovimientoBL.Guardar(cancelacionMovimientoSalida); } traspasoCancelar.Activo = EstatusEnum.Inactivo; traspasoCancelar.UsuarioModificacionID = info.Usuario.UsuarioID; traspasoMateriaPrimaDAL.Actualizar(traspasoCancelar); movimientoOrigen.UsuarioModificacionID = info.Usuario.UsuarioID; if (movimientoDestino != null) { movimientoDestino.UsuarioModificacionID = info.Usuario.UsuarioID; } movimientoOrigen.Status = Estatus.CanceladoInv.GetHashCode(); if (movimientoDestino != null) { movimientoDestino.Status = Estatus.CanceladoInv.GetHashCode(); } almacenMovimientoBL.ActualizarEstatus(movimientoOrigen); almacenMovimientoBL.ActualizarEstatus(movimientoDestino); AlmacenMovimientoInfo movimientoCancelacion = almacenMovimientoBL.ObtenerPorIDCompleto(almacenMovimientoEntradaID); if (movimientoCancelacion == null) { return(null); } info.FolioTraspaso = traspasoCancelar.FolioTraspaso; info.FechaTraspaso = movimientoCancelado.FechaCancelacion; info.AlmacenMovimientoID = movimientoDestino.AlmacenMovimientoID; MemoryStream pdfPoliza = null; if (info.AlmacenOrigen.AlmacenID != info.AlmacenDestino.AlmacenID) { info.EsCancelacion = true; var productoBL = new ProductoBL(); info.ProductoOrigen = productoBL.ObtenerPorID(info.ProductoOrigen); info.ProductoDestino = info.ProductoOrigen; PolizaAbstract poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.EntradaTraspaso); IList <PolizaInfo> listaPolizas = poliza.GeneraPoliza(info); pdfPoliza = poliza.ImprimePoliza(info, listaPolizas); if (listaPolizas != null && listaPolizas.Any()) { listaPolizas.ToList().ForEach(datos => { datos.OrganizacionID = info.Usuario.Organizacion.OrganizacionID; datos.UsuarioCreacionID = info.Usuario.UsuarioID; datos.Activo = EstatusEnum.Activo; datos.ArchivoEnviadoServidor = 1; }); var polizaDAL = new PolizaDAL(); polizaDAL.CrearServicioPI(listaPolizas, TipoPoliza.EntradaTraspaso); } } transaction.Complete(); resultado.Add(info.FolioTraspaso, pdfPoliza); return(resultado); } } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }