/// <summary> /// Metodo que Guarda un proveedor /// </summary> /// <param name="info"></param> internal void Guardar(ProveedorInfo info) { try { Logger.Info(); using (var tscope = new System.Transactions.TransactionScope(System.Transactions.TransactionScopeOption.Required)) { var proveedorDAL = new ProveedorDAL(); if (info.ProveedorID != 0) { proveedorDAL.Actualizar(info); var provComisionDal = new ComisionDAL(); var provChofDAL = new ProveedorChoferDAL(); var lista = (from p in info.Choferes select new ProveedorChoferInfo() { Proveedor = info, Chofer = p, Activo = EstatusEnum.Activo, UsuarioCreacionID = info.UsuarioModificacionID ?? 0 }).ToList(); provChofDAL.Guardar(lista); provComisionDal.GuardarComisiones(info.Comisiones); if (info.TipoProveedor.TipoProveedorID == TipoProveedorEnum.Comisionistas.GetHashCode()) { var listaRetenciones = new List <ProveedorRetencionInfo>(); ObtenerListaProveedorRetencion(listaRetenciones, info); if (listaRetenciones.Any()) { var proveedorRetencionBL = new ProveedorRetencionBL(); IList <ProveedorRetencionInfo> listaRetencionesGuardadas = proveedorRetencionBL.ObtenerPorProveedorID(info.ProveedorID); if (listaRetencionesGuardadas != null && listaRetencionesGuardadas.Any()) { ProveedorRetencionInfo proveedorRetencionInfo; foreach (var retencion in listaRetenciones) { if (retencion.Iva != null) { proveedorRetencionInfo = listaRetencionesGuardadas.FirstOrDefault(ret => ret.Iva.IvaID > 0); if (proveedorRetencionInfo != null) { retencion.ProveedorRetencionID = proveedorRetencionInfo.ProveedorRetencionID; retencion.UsuarioModificacionID = info.UsuarioModificacionID ?? 0; } } else { proveedorRetencionInfo = listaRetencionesGuardadas.FirstOrDefault(ret => ret.Retencion.TipoRetencion.Equals(retencion.Retencion.TipoRetencion)); if (proveedorRetencionInfo != null) { retencion.ProveedorRetencionID = proveedorRetencionInfo.ProveedorRetencionID; retencion.UsuarioModificacionID = info.UsuarioModificacionID ?? 0; } } } } proveedorRetencionBL.GuardarLista(listaRetenciones); } } } else { proveedorDAL.Crear(info); } tscope.Complete(); } } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
public static void Crear(Proveedor proveedorACrear) { ProveedorDAL.Crear(proveedorACrear); }