/// <summary> /// Consulta los folios activos con el peso tara capturado. /// </summary> /// <param name="filtro"></param> /// <returns></returns> internal List <SalidaProductoInfo> ObtenerTraspasoFoliosActivos(SalidaProductoInfo filtro) { List <SalidaProductoInfo> salidaProductos = null; try { Logger.Info(); var entradaProductoDAL = new SalidaProductoDAL(); salidaProductos = entradaProductoDAL.ObtenerTraspasoFoliosActivos(filtro); if (salidaProductos != null && salidaProductos.Count > 0) { foreach (var salida in salidaProductos) { if (salida.Cliente != null && salida.Cliente.ClienteID > 0) { var clienteBl = new ClienteBL(); salida.Cliente = clienteBl.ObtenerPorID(salida.Cliente.ClienteID); } } } } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(salidaProductos); }
/// <summary> /// Guarda el segundo pesaje de la salida de producto /// </summary> /// <param name="salida"></param> /// <returns></returns> internal SalidaProductoInfo GuardarSegundoPesajeSalida(SalidaProductoInfo salida) { try { Logger.Info(); using (var transaction = new TransactionScope()) { var entradaProductoDAL = new SalidaProductoDAL(); int resultado = entradaProductoDAL.GuardarSegundoPesajeSalida(salida); if (resultado > 0) { salida.FolioSalida = resultado; } transaction.Complete(); } } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(salida); }
/// <summary> /// Actualiza el almacen, almacen inventario lote y piezas. /// </summary> /// <param name="salida"></param> internal void ActualizarAlmacenInventarioLote(SalidaProductoInfo salida) { try { var entradaProductoDAL = new SalidaProductoDAL(); entradaProductoDAL.ActualizarAlmacenInventarioLote(salida); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
internal bool Cancelar(SalidaProductoInfo salidaProducto) { try { Logger.Info(); var salidaProductoDAL = new SalidaProductoDAL(); return(salidaProductoDAL.Cancelar(salidaProducto)); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene una salida de producto por foliosalida /// </summary> /// <param name="filtro"></param> /// <returns></returns> internal SalidaProductoInfo ObtenerPorFolioSalida(SalidaProductoInfo filtro) { SalidaProductoInfo salidaProducto = null; try { Logger.Info(); var entradaProductoDAL = new SalidaProductoDAL(); salidaProducto = entradaProductoDAL.ObtenerPorFolioSalida(filtro); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(salidaProducto); }
internal ResultadoInfo <SalidaProductoInfo> ObtenerFoliosPorPaginaParaCancelacion(PaginacionInfo pagina, SalidaProductoInfo filtro) { ResultadoInfo <SalidaProductoInfo> salidas; try { Logger.Info(); var entradaProductoDAL = new SalidaProductoDAL(); salidas = entradaProductoDAL.ObtenerFoliosPorPaginaParaCancelacion(pagina, filtro); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(salidas); }
/// <summary> /// Genera el xml de la factura de venta de materia prima /// </summary> /// <param name="salidaProducto"></param> internal void GenerarDatosFacturaVentaDeMateriaPrima(SalidaProductoInfo salidaProducto) { try { Logger.Info(); var salidaIndividualDAL = new SalidaProductoDAL(); var facturaInfo = salidaIndividualDAL.ObtenerDatosFacturaPorFolioSalida(salidaProducto); facturaInfo = ObtenerDatosDeConfiguracion(facturaInfo, salidaProducto.Organizacion.OrganizacionID); GenerarFactura(facturaInfo, salidaProducto.Organizacion.OrganizacionID); } catch (ExcepcionServicio) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene una lista de salidas de producto /// </summary> /// <param name="almacenesMovimiento"></param> /// <returns></returns> internal IEnumerable <SalidaProductoInfo> ObtenerSalidasProductioConciliacionPorAlmacenMovimientoXML(List <AlmacenMovimientoInfo> almacenesMovimiento) { IEnumerable <SalidaProductoInfo> salidasProducto; try { Logger.Info(); var entradaProductoDAL = new SalidaProductoDAL(); salidasProducto = entradaProductoDAL.ObtenerSalidasProductioConciliacionPorAlmacenMovimientoXML(almacenesMovimiento); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(salidasProducto); }
/// <summary> /// Obtiene una salida de producto por id /// </summary> /// <param name="salidaProducto"></param> /// <returns></returns> internal SalidaProductoInfo ObtenerPorSalidaProductoId(SalidaProductoInfo salidaProducto) { try { var salidaProductoDal = new SalidaProductoDAL(); salidaProducto = salidaProductoDal.ObtenerPorSalidaProductoId(salidaProducto); if (salidaProducto != null) { if (salidaProducto.Organizacion.OrganizacionID > 0) { var organizacionBl = new OrganizacionBL(); salidaProducto.Organizacion = organizacionBl.ObtenerPorID(salidaProducto.Organizacion.OrganizacionID); } if (salidaProducto.OrganizacionDestino.OrganizacionID > 0) { var organizacionBl = new OrganizacionBL(); salidaProducto.Organizacion = organizacionBl.ObtenerPorID(salidaProducto.OrganizacionDestino.OrganizacionID); } if (salidaProducto.Almacen.AlmacenID > 0) { var almacenBl = new AlmacenBL(); salidaProducto.Almacen = almacenBl.ObtenerPorID(salidaProducto.Almacen.AlmacenID); } if (salidaProducto.AlmacenInventarioLote.AlmacenInventarioLoteId > 0) { var almacenInventarioLoteBl = new AlmacenInventarioLoteBL(); salidaProducto.AlmacenInventarioLote = almacenInventarioLoteBl.ObtenerAlmacenInventarioLotePorId( salidaProducto.AlmacenInventarioLote.AlmacenInventarioLoteId); } if (salidaProducto.Cliente.ClienteID > 0) { var clienteBl = new ClienteBL(); salidaProducto.Cliente = clienteBl.ObtenerPorID(salidaProducto.Cliente.ClienteID); } if (salidaProducto.CuentaSAP.CuentaSAPID > 0) { var cuentaSapBl = new CuentaSAPBL(); salidaProducto.CuentaSAP = cuentaSapBl.ObtenerPorID(salidaProducto.CuentaSAP.CuentaSAPID); } if (salidaProducto.TipoMovimiento.TipoMovimientoID > 0) { var tipoMovimientoBl = new TipoMovimientoBL(); salidaProducto.TipoMovimiento = tipoMovimientoBl.ObtenerPorID(salidaProducto.TipoMovimiento.TipoMovimientoID); } } } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(salidaProducto); }
/// <summary> /// Termina la salida del producto /// </summary> /// <param name="salida"></param> /// <returns></returns> internal MemoryStream TerminarSalidaProducto(SalidaProductoInfo salida) { try { Logger.Info(); bool generaFactura = salida.GeneraFactura; MemoryStream resultado = null; var almacenBl = new AlmacenBL(); var almacenMovimientoDetalleDAL = new AlmacenMovimientoDetalleDAL(); var almacenMovimiento = new AlmacenMovimientoInfo(); var almacenInventarioLoteBl = new AlmacenInventarioLoteBL(); var almacenInventarioBl = new AlmacenInventarioBL(); var salidaProductoDal = new SalidaProductoDAL(); PolizaAbstract poliza = null; IList <PolizaInfo> polizas = null; using (var transaction = new TransactionScope()) { almacenMovimiento.AlmacenID = salida.Almacen.AlmacenID; almacenMovimiento.TipoMovimientoID = salida.TipoMovimiento.TipoMovimientoID; almacenMovimiento.UsuarioCreacionID = salida.UsuarioModificacionId; almacenMovimiento.Status = (int)EstatusInventario.Aplicado; AlmacenMovimientoInfo almacenMovimientoGenerado = almacenBl.GuardarAlmacenMovimiento(almacenMovimiento); if (almacenMovimientoGenerado != null) { AlmacenInventarioLoteInfo almacenInventarioLote = almacenInventarioLoteBl.ObtenerAlmacenInventarioLotePorId( salida.AlmacenInventarioLote.AlmacenInventarioLoteId); var listaAlmacenInventarioDetalle = new List <AlmacenMovimientoDetalle>(); var movimientoDetalle = new AlmacenMovimientoDetalle { AlmacenMovimientoID = almacenMovimientoGenerado.AlmacenMovimientoID, AlmacenInventarioLoteId = salida.AlmacenInventarioLote.AlmacenInventarioLoteId, Precio = almacenInventarioLote.PrecioPromedio, ProductoID = salida.Producto.ProductoId, Cantidad = salida.PesoBruto - salida.PesoTara, Piezas = salida.Piezas, Importe = (salida.PesoBruto - salida.PesoTara) * almacenInventarioLote.PrecioPromedio, UsuarioCreacionID = salida.UsuarioModificacionId }; listaAlmacenInventarioDetalle.Add(movimientoDetalle); almacenMovimientoDetalleDAL.GuardarAlmacenMovimientoDetalle(listaAlmacenInventarioDetalle, almacenMovimientoGenerado. AlmacenMovimientoID); if (almacenInventarioLote != null) { almacenInventarioLote.Cantidad = almacenInventarioLote.Cantidad - (salida.PesoBruto - salida.PesoTara); almacenInventarioLote.Importe = almacenInventarioLote.PrecioPromedio * almacenInventarioLote.Cantidad; almacenInventarioLote.UsuarioModificacionId = salida.UsuarioModificacionId; almacenInventarioLoteBl.Actualizar(almacenInventarioLote); AlmacenInfo almacen = almacenBl.ObtenerPorID(almacenMovimiento.AlmacenID); List <AlmacenInventarioInfo> listaAlmacenlmacenInventario = almacenInventarioBl.ObtienePorAlmacenId(almacen); if (listaAlmacenlmacenInventario != null) { AlmacenInventarioInfo inventarioProducto = listaAlmacenlmacenInventario.FirstOrDefault( registro => registro.ProductoID == salida.Producto.ProductoId); if (inventarioProducto != null) { inventarioProducto.Cantidad = inventarioProducto.Cantidad - (salida.PesoBruto - salida.PesoTara); inventarioProducto.Importe = (inventarioProducto.PrecioPromedio * inventarioProducto.Cantidad); //Actualiza inventario inventarioProducto.UsuarioModificacionID = salida.UsuarioModificacionId; inventarioProducto.ProductoID = salida.Producto.ProductoId; inventarioProducto.AlmacenID = almacen.AlmacenID; almacenInventarioBl.ActualizarPorProductoId(inventarioProducto); salida.GeneraFactura = generaFactura; salidaProductoDal.TerminarSalidaProducto(salida, almacenMovimientoGenerado); #region POLIZA poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza( TipoPoliza.SalidaVentaProducto); salida.Importe = (salida.PesoBruto - salida.PesoTara) * salida.Precio; salida = ObtenerFolioPorReimpresion(salida); polizas = poliza.GeneraPoliza(salida); if (polizas != null) { var polizaBL = new PolizaBL(); polizas.ToList().ForEach(datos => { datos.OrganizacionID = salida.Organizacion.OrganizacionID; datos.UsuarioCreacionID = salida.UsuarioCreacionId; datos.ArchivoEnviadoServidor = 1; }); polizaBL.GuardarServicioPI(polizas, TipoPoliza.SalidaVentaProducto); if (salida.Almacen == null) { salida.Almacen = new AlmacenInfo(); } salida.Almacen.Organizacion = new OrganizacionInfo { OrganizacionID = salida.Organizacion.OrganizacionID }; resultado = poliza.ImprimePoliza(salida, polizas); } #endregion POLIZA if (generaFactura) { #region FACTURA if (salida.TipoMovimiento.TipoMovimientoID == TipoMovimiento.ProductoSalidaVenta.GetHashCode()) { //Genera el xml y lo guarda en la ruta especificada en la configuración var facturaBl = new FacturaBL(); facturaBl.GenerarDatosFacturaVentaDeMateriaPrima(salida); } #endregion } transaction.Complete(); } else { throw new ExcepcionDesconocida( Properties.ResourceServices.InventarioNormal_ErrorMovimientos); } } else { throw new ExcepcionDesconocida( Properties.ResourceServices.InventarioNormal_ErrorMovimientos); } } else { throw new ExcepcionDesconocida( Properties.ResourceServices.InventarioNormal_ErrorMovimientos); } } else { throw new ExcepcionDesconocida( Properties.ResourceServices.InventarioNormal_ErrorMovimientos); } } return(resultado); } catch (ExcepcionServicio ex) { Logger.Error(ex); throw; } catch (ExcepcionDesconocida) { throw; } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }