All streams
Search
Write a publication
Pull to refresh
51
0.7

Senior | Lead | Architect .NET Core Developer

Send message

В договор к ИП лучше не прописывать отпуска xD. Это как красная тряпка для быка налоговой.

Да типа того, но

  1. Если почитать судебную практику и ее анализ, то трудовые отношения определяются по совокупности признаков - например работа с 9 до 18 + в документах прописаны обязанности, а не конкретный объем работы + нахождение на территории работодателя. Но все же знают какие суды в РФ, так что вилами по воде. Думаю ИП удаленщика из другого города профессиональный юрист сможет отмазать в суде. Но сам факт такого суда - это нервы, время и деньги.

  2. У меня был еще один показательный пример. Компания на гос. подряде :) Тендеры и все такое. Я там был как ИП на часовой ставке (T&M такие типы договоров в принципе существуют и законны). Так вот там был договор на десяток страниц (сказали, что утверждали вместе с налоговой) + скриншоты переписки, что они реально искали человка на реальную работу + четкая фиксация в жире и скрины, что были реальные задачи. В общем обложились по самое не хочу.

В договоре с upwork прописано, что они берут комиссию. Там 60 страниц мелкого текста, но если налоговая упрется - дочитает до того пункта.

И в финансовых документах на upwork сумма полная, до вычета комиссии.

Хотя с другой стороны, на тот момент в интернетах были жаркие споры - что показывать налоговой, то что было на бирже, или то что по факту упало на р/с. Мнения разделились 50 на 50, вроде даже были ссылки на законы.

У меня на госуслугах появилось уведомление, там же заполнил и отправил.

Не всегда. Зависит от настройки в момент отправки платежки. Там три варианта - все платит отправитель, все платит получатель, распределение - начальную комиссию платит отправитель, комиссию транзитному банку получатель.

Рубль постоянно дешевеет в долгосрочной перспективе. За последние пару лет с 60-65 до 70-75. Выгодней держать валюту и менять по мере необходимости. Или в пики когда доллар 80. Вот недавно был очередной такой скачек.

Статья довольно полная, но не указано еще два момента:

  1. Комиссии за вывод средств со счета ИП на счет физ лица. Обычно можно бесплатно вывести 150-200-300 тыс, в зависимости от банка. Остальное за 1-3-5% от суммы. В случае перевода валюты, например в Модуль Банке - это 20-30$ баксов за сам перевод + 1-3-5% от суммы свыше 300 тыс. Для айтишников с 10+ опытом это актуально, так как зарплаты уже давно больше 300 тыс.

  2. Есть еще вариант переводить валюту на счет физ лица сразу. Вот эта особенность "Имущество физ лица и ИП не разделимы и ИП отвечает всем своим имуществом" в принципе позволяет это сделать. Когда-то я писал официальный запрос в свою налоговую "какой налог платить за разработку ПО, которая пришла на счет физлица - 13% или 6%". Ответ был - 6% и включать этот приход в куидр самого ИП. Т.е. это деньги ИП. При этом физ лицо не проходит валютный контроль. Отсутствует комиссия за вывод средств на счет физ лица. И например в альфе есть возможность так же менять валюту на бирже по курсу + 0,15-0,30%. Но у меня нет досканального анализа законодательства для этой ситуации. Действительно ли там все хорошо.

Для российских компаний да. А каким образом можно устроится по ТК РФ в зарубежную компанию? С другой стороны - регулярный доход по ГПХ на физ лицо - это незаконная предпринимательская деятельность.

Б) подверждаю, сам закидывал деньги на счет ИП, назначение платежа "внесение личных средств на ....". Претензий не было.

Д) при работе с биржами образовалась проблема несколько лет назад - это НДС с услуг, которые ИП оплачивает бирже (ту комиссию за заказы, 5-10% на upwork). Я на тот момент с биржи уже ушел. Поэтому не попал. Ну и сейчас не знаю как там дела обстоят.

Сбербанк самый наихудший банк. Никакие временные акции не стоят того.

Я сделал интерфейсы

public interface ICustomMap<TSource, TDestination>
{
	void ConfigureMap(IMappingExpression<TSource, TDestination> mapping);
}

public interface IMapTo<TDestination>
{
}

public interface IMapFrom<TSource>
{
}

Использую их в моделях вот так

public class RoleAddEditModel :
	ICustomMap<Role, RoleAddEditModel>,
	ICustomMap<RoleAddEditModel, Role>
{
	public string Id { get; set; }
	
	public string Name { get; set; }

	public string Description { get; set; }

	public void ConfigureMap(IMappingExpression<Role, RoleAddEditModel> mapping)
	{

	}

	public void ConfigureMap(IMappingExpression<RoleAddEditModel, Role> mapping)
	{
		mapping.ForMember(e => e.Id, o => o.Ignore());
	}
}

Сделал Setup метод, который пробегает по сборке и ищет все классы наследники этих трех интерфейсов и регистрирует маппинги. Метод вызываю в Startup.ConfigureServices.

public static class Setup
{
	public static IServiceCollection SetupMapping(this IServiceCollection services, params Assembly[] assemblies)
	{
		var mappingTypeInfo = GetMappingTypeInfo(assemblies);

		var mapperConfiguration = new MapperConfiguration(cfg =>
		{
			foreach (var item in mappingTypeInfo)
			{
				if (item.Type == MappingType.Default)
				{
					cfg.CreateMap(item.Source, item.Destination);
				}

				if (item.Type == MappingType.Custom)
				{
					var createMapMethod = typeof(IProfileExpression).GetMethod(nameof(IProfileExpression.CreateMap), new Type[0]);
					var createMapMethodGeneric = createMapMethod.MakeGenericMethod(item.Source, item.Destination);

					var configureMapMethod = typeof(ICustomMap<,>)
						.MakeGenericType(item.Source, item.Destination)
						.GetMethod(nameof(ICustomMap<object, object>.ConfigureMap));

					var mapConfiguration = createMapMethodGeneric.Invoke(cfg, null);
					configureMapMethod.Invoke(item.Instance, new[] { mapConfiguration });
				}
			}
		});

		services.AddSingleton<IMapper>(serviceProvider => new Mapper(mapperConfiguration));

		return services;
	}

	private static List<MappingTypeInfo> GetMappingTypeInfo(Assembly[] assemblies)
	{
		var result = new List<MappingTypeInfo>();

		foreach (var assembly in assemblies)
		{
			var types = assembly.GetExportedTypes();

			var mappingTypes = from t in types
							   from i in t.GetInterfaces()
							   where i.IsGenericType && t.IsAbstract == false && t.IsInterface == false && (
									 i.GetGenericTypeDefinition() == typeof(IMapFrom<>) ||
									 i.GetGenericTypeDefinition() == typeof(IMapTo<>) ||
									 i.GetGenericTypeDefinition() == typeof(ICustomMap<,>))
							   select new { Type = t, Interface = i };

			foreach (var item in mappingTypes)
			{
				if (item.Interface.GetGenericTypeDefinition() == typeof(IMapFrom<>))
				{
					result.Add(new MappingTypeInfo
					{
						Type = MappingType.Default,
						Source = item.Interface.GetGenericArguments()[0],
						Destination = item.Type,
					});

					continue;
				}

				if (item.Interface.GetGenericTypeDefinition() == typeof(IMapTo<>))
				{
					result.Add(new MappingTypeInfo
					{
						Type = MappingType.Default,
						Destination = item.Interface.GetGenericArguments()[0],
						Source = item.Type
					});

					continue;
				}

				if (item.Interface.GetGenericTypeDefinition() == typeof(ICustomMap<,>))
				{
					result.Add(new MappingTypeInfo
					{
						Type = MappingType.Custom,
						Instance = Activator.CreateInstance(item.Type),
						Source = item.Interface.GetGenericArguments()[0],
						Destination = item.Interface.GetGenericArguments()[1]
					});

					continue;
				}
			}
		}

		return result;
	}
}

И потом в классах бизнес-логики использую IMapper.

В итоге маппинги хранятся в модели. Хотя их можно хранить и в отдельных классах при необходимости, главное чтобы метод наследовал интерфейс ICustomMap / IMapTo / IMapFrom. И они автоматически регистрируются.

Да, просят больше, знают меньше, чем раньше. Причем разница колоссальная. Есть резюме "мидлов" с одним годом опыта за 200. Есть мидлы за 140-160, которые на основной блок технических вопросов отвечают лучше сениоров за 300. Но сениорам еще даю задачу на системный дизайн.

В последнее время стал собеседовать людей на C#. У нас верхняя планка $4-5к. Весной 2021 было еще норм. А теперь 150-200 тр просят "мидлы" с 1-3 годами опыта. А сениоры за 4-5к, кто приходит, не вывозят собес.

Ну или 1 место с конца xD среди городов миллионников

Там ее и так 16 гигов, можно добавить еще один M2 SSD.

Вес 1.8 кг - зачем нужен этот кирпич?? LG Gram 16 - 1.2 кг. Ноутбук в первую очередь должен быть максимально легким для своего размера.

Раньше покупал всякие фильдеперсовые клавы, но у всех была одна проблема - года через 3-4-5 у них выламывалась клавиша С

Каждая клава стоила в среднем 5 тр.

Теперь купил самую простую за 1000 рублей. Если проживет столько же - то смысла в фильдеперсовых клавах нет.

Про техас интересно - там вроде чуть ли не у каждого ребенка по пушке, но в абсолютных велечинах на втором месте. Это к слову о массовом разрешении на ношения оружияв РФ.

Половина вопросов теоретические. Далеко не каждый день сидишь и копаешь процессы, потоки ос и решаешь задачи/проблемы виртуализации и системного администрирования.

Чаще всего перекладываешь json в базу и обратно. И раскапываешь доку на внешний сервис, с которым тебе надо интегрироваться. Периодически возникают проблемы производительности. Но никакое управление памятью потоками и процессами оказывается не причем. А тупо в семафор случайно передают ноль в качестве периода срабатывания, что и грузит проц на 99%.

Так что все сводится к повторению теории перед собеседованием. В надежде угадать какие именно вопросы будут спрашивать именно на этом собесе.

Information

Rating
1,873-rd
Location
Россия
Registered
Activity

Specialization

Backend Developer, Software Architect
Senior
C#
.NET Core
SQL