public object CreateProveedor(Dtos.Proveedor dto)
        {
            ValidateProveedor(dto);
            var empresa = CdpContext.Empresas.Single(e => e.Id == CDPSession.Current.Usuario.CurrentEmpresa.Id);
            var idSapOrganizacionDeVenta = int.Parse(empresa.IdSapOrganizacionDeVenta);
            var lastProveedor            = CdpContext.Proveedores.OrderByDescending(c => c.SapId).FirstOrDefault(c => c.IdSapOrganizacionDeVenta == idSapOrganizacionDeVenta && c.EsProspecto);
            var currentId = long.Parse(lastProveedor != null ? lastProveedor.SapId : "9300000000");

            var entity = new Entities.Proveedor
            {
                SapId           = (++currentId).ToString(),
                Nombre          = dto.Nombre,
                TipoDocumento   = CdpContext.TiposDocumentoSap.Single(e => e.SapId == "80"),
                NumeroDocumento = dto.NumeroDocumento,
                EsProspecto     = true,
                Enabled         = true,
                CreateDate      = DateTime.Now,
                Calle           = string.Empty,
                Cp     = string.Empty,
                Numero = string.Empty,
                Piso   = string.Empty,
                IdSapOrganizacionDeVenta = string.IsNullOrEmpty(empresa.IdSapOrganizacionDeVenta) ? 0 : idSapOrganizacionDeVenta
            };

            CdpContext.Proveedores.Add(entity);
            CdpContext.SaveChanges();

            return(Mapper.Map <Entities.Proveedor, Dtos.Proveedor>(entity));
        }
        private void ValidateProveedor(Dtos.Proveedor dto)
        {
            var entity = CdpContext.Proveedores.FirstOrDefault(c => string.Equals(c.NumeroDocumento, dto.NumeroDocumento));

            if (entity != null && entity.Id != dto.Id)
            {
                throw new Exception(string.Format("El {0} ya se encuentra asignado a otro proveedor", CDPSession.Current.Usuario.CurrentEmpresaLabelCuit));
            }
        }