Страницы

четверг, 26 апреля 2012 г.

Как я стал индивидуальным предпринимателем

Данный пост не имеет никакого отношения к кодингу, здесь я напишу, как оформить отношение с нашим государством, а именно, оформить документы на регистрацию физического лица как индивидуального предпринимателя занимающегося разработкой и поддержкой ПО.
Итак начнем!
      Первое, что нужно сделать - это найти адресс налоговой инспекции, где занимаются оформлением данных документов. В Омске - на ул Маршала Жукова 72/1.
 Но идти туда с пустыми руками не следует. Вы просто потеряете время. Для начала следует подготовить пакет документов (ксерокопию паспорта, заявление на регистрацию) и оплатить пошлину.
Из паспорта нужно ксерокопировать основные страницы и, желательно, чтобы все данные были на одном листе. Иначе придется сшивать документы (как это делается расскажу ниже).
Для заполнения заявления на регистрацию нужно залезть на сайт налоговой инспекции и скачать соответствующее ПО, например, по этой ссылке программа.
Загрузив и установив приложение, приступим к созданию документов.
После запуска приложения загрузится основное окно, в котором нужно кликнуть на кнопку "Документ" в верхнем меню, всплывет окно создания пакета документов.

В нем опять же кликаем на кнопку "Создать", появляется список шаблонов документов.


Наш пункт - первый. Заполняется шаблон достаточно просто, но есть пара нюансов.

Во - первых, в поле "Регистрирующий орган" нужно указывать ту налоговую, которую вы нашли до этого (занимается регистрацией ИП, и эта налоговая не обязательно находится по месту вашей прописки). Во - вторых, сложность возникает при заполнении поля "Количество видов деятельности", найти то, что нужно программисту, не представляется возможным, поскольку не поддается логике, потому просто привожу скрин.


В последнем выпадающем списке можно выбрать что-то более подходящее. Правильность заполнения можно проверять нажимая кнопку "Контроль".
Далее следует распечатать данные документы и сшить их.
Сшивать нужно отдельно каждый документ - паспорт, если он из нескольких листов, и отдельно заявление.
Хочу обратить ваше внимание, что сшивание это и есть сшивание!! То есть нужно взять иголку, нитку и прошить левый верхний угол, заклеить это дело прямоугольником белой бумаги, причем так, чтобы из-под бумаги торчали оба конца нити.




После того как вы собрали и сшили документы, можно ехать в налоговую. Но это еще не все. Нужно заплатить гос. пошлину, для этого в налоговой нужно подойти к информатору и попросить реквизиты для уплаты гос. пошлины для регистрации ИП. После этого идем в ближайший банк и платим гос. пошлину. С бланком идете в налоговую. Бланк прикладываете к своим документам. Не знаю как в других городах, в Омске, придя в налоговую, нужно зарегистрироваться в электронной очереди. К моему удивлению, очередь проходит очень быстро. Вся регистрация у меня заняла час, но сюда входит время беганья по магазинам в поисках ниток, иголки, ручки и клея, и уплата гос. пошлины (большую часть времени я провел именно в банке).
Есть еще 2 пути регистрации.
Первый - наиболее простой, но затратный. Можно обратится в фирму, которая занимается регистрацией. Второй - это отправка электронных документов. Но как мне сказала девушка - информатор: по их статистике число отказов в регистрации через электронные документы намного больше.


Свидетельство о регистрации я получил через 10 дней (как и сказала мне девушка, принимавшая документы). Стоит заметить, что если вы хотите изменить налоговое обложение, то с полученными документами нужно ехать в налоговую по месту прописки.


воскресенье, 18 декабря 2011 г.

Обнуление PeopleEditor

В одном из проектов потребовалось на стороне клиента, обнулить значение поля выбора пользователя (PeopleEditor)  но как оказалось это не так просто. Поковырявшись в разметке около 3х часов написал следующий код.

 if ($("div[id$='Performer_upLevelDiv']")[0].innerHTML != "") {
  $("div[id$='Performer_upLevelDiv']")[0].innerHTML = "";
  $("textarea[id$='Performer_downlevelTextBox']")[0].innerHTML = "";
  $("input[id$='Performer_hiddenSpanData']").val('');
  $("input[id$='Performer_OriginalEntities']").val('');
  $("input[id$='Performer_HiddenEntityKey']").val('');
  $("input[id$='Performer_HiddenEntityDisplayText']").val('');
  }
 Сей код полностью обнулят контрлл PeopleEditor с id = Performer, и при сабмите на сервер  контрол придет полностью пустым.

Рассылка в SharePoint

Привет всем, этим постом я начну серию по SharePoint (далее шарик), кому-то эти знания покажутся тривиальными, но мне пришлось потратить некоторое время, чтоб найти их и адаптировать по свои нужды. 
Итак, начнем. В шарике есть встроенная рассылка, когда приходят письма об определенных событиях прошедших на портале. Например, назначение задачи на пользователя или изменение статуса задачи. Можно конечно воспользоваться типами из пространства имен System.Net но в этом случае письма будут приходить не в стиле шарика.
Задача 1 предположим у нас на узле шарика есть стандартный список замечаний названный “Замечания” и нужно отправлять оповещение пользователю, на которого назначена данная задача.

            SPWeb web = new SPSite(Url  вашего сайта где находится список “Замечания”).OpenWeb();
            SPAlert alert = web.Alerts.Add();  //добавляем оповещение
            alert.Title = "Вам назначена задача"; //тут добавляем “начало” темы письма
            alert.AlertType = SPAlertType.List;  // оповещение для списка (не для конкретного элемента)
            alert.EventType = SPEventType.Add;   // cобытия на которые срабатывает alert (можно Delete, Discussion, Modify, All и Add)
            alert.AlertFrequency = SPAlertFrequency.Immediate;  // отсылать оповещение сразу (можно ежденевно, сразу, раз в неделю)
            alert.User = null; // оповещение системное, и владельца у него нет                 
            alert.AlertTemplate = new SPAlertTemplate { Name = "SPAlertTemplateType.Tasks" }; // шаблон сообщения 
            alert.List = web.Lists["Замечания"];                // список на который вешается динамическое оповещение
            alert.DynamicRecipient = "AssignedTo";             // поле, в котором указан пользователь получающий оповещение
            alert.Status = SPAlertStatus.On; //включение отключение оповещения
            alert.Update(false);  //применяем все изменения которые внесли после создания оповещения 

Подробнее о шаблонах писем тут msdn.microsoft.com/ru-ru/library/bb802738.aspx

Задача 2 нужно отправить оповещение автору задачи, если задача перешла в статус «Выполнено» или «Отклонено»

var chose = new List<string>() { "Выполнено", "Отклонено" }; 
                for (int j = 0; j < chose.Count; j++)
                {
                    SPAlert alertProblem = web.Alerts.Add();
                    alertProblem.Title = "Замечание";
                    alertProblem.AlertType = SPAlertType.List;             // оповещение для списка (не для конкретного элемента)
                    alertProblem.EventType = SPEventType.Modify;           // события на которые срабатывает alert (модификация Items)

Главное отличие этого оповещения от предыдущего это то, что нужно фильтровать события и конечно тут никуда не денешься от CAML запроса. Суть запроса фильтровать изменение в Item и если значение в поле “Status” изменилось и является одним из нужных нам («Выполнено», «Отклонено») то срабатывает оповещение. Вообще возможность применения CAML запросов делает достаточно гибким систему оповещений SharePoint.

                    alertProblem.Filter = @"" + "" +
                        "" +
                            "" +
                                chose[j] +
                            "" +
                            "" + //новое значение в поле Status
                        "" +
                        "" +
                           "" +
                               chose[j] +
                            "" +
                            "" + // значение в поле Status до изменения
                        "" +
                      "" + "";         
                    alertProblem.AlertFrequency = SPAlertFrequency.Immediate; 
                    alertProblem.User = null;                                  // оповещение системное, и владельца у него нет

                    alertProblem.AlertTemplate = new SPAlertTemplate { Name = "SPAlertTemplateType.Tasks" };
                    alertProblem.List = web.Lists["Замечания"];
                    alert.DynamicRecipient = " Author";             // поле, в котором указан пользователь получающий оповещение

                    alertProblem.Status = SPAlertStatus.On;
                    alertProblem.Update(false);
                }

Итогом всего этого будет рассылка писем в стиле SharePoint.
Данный код привязать к списку можно консольным приложением или вставив, в какое либо событие. Я его вставил в событие создание web – узла.