1. Открыть ИП. Тут вроде все просто.При выборе системы налогообложения не поленитесь узнать стоимость патента для вашего вида деятельности.
3. Зарегистрироваться в Эльбе для бухгалтерии.Можно и самому все делать. Это в принципе не сложно, что на УСН, что на ПСН.
4. Перевести текущий контракт на русский. Можно самому? Заверять насколько я понял не нужно.Спросите в банке. В одном у меня приняли как есть на английском, в двух других требовали заверенный нотариально перевод.
1. Раз в месяц я должен отправить инвойс или акт работодателю с номером счета, со списком выполненных работ (Это обязательно? у меня бессрочный контракт, таски могут быть разные).У меня примерно так и выходит, но без списка. Заказчику он не нужен, валютному контролю тоже, им только счет и акт нужен.
2. Деньги падают в $ на транзитный счет, там банк проверяет сделку, инвойс (акт) и контракт я так понимаю?Когда деньги пришли, вы должны будете в течение 15 рабочих дней предоставить в банк справку о валютных операциях, справку о подтверждающих документах (+ сами документы - счет и акт) и распоряжение насчет пришедшей суммы. Банк проверит справки и выполнит рапоряжение. распоряжение может быть на перевод валюты на ваш текущий валютный счет, ил на продажу валюты за рубли с зачислением вырученной суммы на ваш рублевый счет.
3. Нужно будет перевести их на рублевый счет и уплатить налог с суммы на момент поступления денег на транз. счет.Переводить в рубли не обязательно. Можете их держать на валютном и обменивать на рубли по мере необходимости. Налог платите (с рублевого) если у вас УСН. При ПСН налог не возникает, ибо вы платите его как бы авансом при получении патента.
4. С рублевого счета я могу отправлять/делать с суммой что угодно?С рублевого или валютного счета ИП отправьте дньги себе на счет физ.лица (это тоже операция подпадающая под валютный контроль и требует справки о ВО, но она простая) и уже оттуда делайте с ними что угодно.
P.S Если уже какое то время получал от этой фирмы зп на paypal и выводил на счет в Сбере, может это как то всплыть?очень маловероятно. в назначении платежа надеюсь не было слова зарплата :)
every()
вернёт true
только, когда по всем элементам выполнено условие.some()
вернёт true
, как только хотя бы в одном встретится выполнение условия.const availableVersions = versions.filter(
version => !!~item.version_ids.indexOf( version.id )
);
!!~
из любого значения, кроме -1
, вернёт true
, а для -1
вернёт false
. ...это делается за пределами компонента. Плюс надо добавить selected для каждой карточки. Их может быть много. Нужно как то событиями реализовать.
<vue-select
:value="selected.id === item.id ? selected.option : null"
:options="item.versions"
@input="selected = { id: item.id, option: $event }"
></vue-select>
2. Открыть валютный счет в банке. Вот тут не все так просто. Я живу в небольшом городе, банков здесь немного, всяких Точек, Модульбанков и Альфа-банков здесь нет. Как быть? Можно ли пользоваться Сбером? (Есть Россельхозбанк, Совкомбанк, ВТБ24, Сбер).
3. Зарегистрироваться в Эльбе для бухгалтерии.
4. Перевести текущий контракт на русский. Можно самому? Заверять насколько я понял не нужно.
1. Раз в месяц я должен отправить инвойс или акт работодателю с номером счета, со списком выполненных работ (Это обязательно? у меня бессрочный контракт, таски могут быть разные).
2. Деньги падают в $ на транзитный счет, там банк проверяет сделку, инвойс (акт) и контракт я так понимаю?
4. С рублевого счета я могу отправлять/делать с суммой что угодно?
const groups = [
{ id: 1, name: 'group 1', items_ids: [1, 2, 4] },
{ id: 2, name: 'group 2', items_ids: [8, 2, 3] },
{ id: 3, name: 'group 3', items_ids: [12, 1] },
{ id: 4, name: 'group 4', items_ids: [] },
{ id: 5, name: 'group 5', items_ids: [] },
]
const result = groups
.filter(group => group.items_ids.length > 0)
.reduce((prev, next, i, acc) => prev.concat(next.items_ids), [])
console.clear()
console.log(result) // [1, 2, 4, 8, 2, 3, 12, 1]
console.log([...new Set(result)]) // [1, 2, 4, 8, 3, 12]
item
.then((response) => {
item = response;
success = true;
})
async createItem() {
this.isLoading = true;
try {
let res = await this.$fetch(`/api/items/${this.params.id}/new/`, {
method: "POST",
body: JSON.stringify(this.createItemBody)
});
let json = await res.json();
await this.dispatch("fetchSecondItem", id);
this.items.push(json);
this.dispatch("notification", {
type: "success",
message: "Item was created."
});
this.isLoading = true;
this.resetForm();
} catch (err) {
this.isLoading = false;
console.log(err);
}
}
class Elems {
constructor() {
this.listeners = new Map();// коллекция элементов и обрабочиков
this.options = { triggers: ['click'] }
this.el=document.documentElement;
}
toggle(){}
show(){}
hide(){}
clickOutsideHandler(){}
addEvenetsListeners() {
/**
* Функция обновления коллекции обработчиков на элементе
*
* @author teknik2008
* @param {HTMLElements} el - элемент для которого устанавливаетсся обработчик
* @param {string} event - событие которое на которое устанавливаетсся обработчик
* @param {function} handler - обработчик события
* @returns {void}
*/
let listeners = this.listeners;
function addListenersCollections(el, event, handler) {
if (!listeners.has(el)) {
let model = {};
model[event] = [];
model[event].push(handler);
listeners.set(el, model);
return;
}
let model = listeners.get(el);
model[event] = event in model ? model[event] : [];
model[event].push(handler);
listeners.set(el, model);
}
this.options.triggers.forEach((event) => {
switch (event) {
case 'click': {
let elHandler = this.toggle.bind(this);
this.el.addEventListener('click', elHandler, false);
addListenersCollections(this.el, 'click', elHandler);
let documentHandler = this.clickOutsideHandler;
document.addEventListener('click', documentHandler, false);
addListenersCollections(document, 'click', documentHandler);
break;
}
case 'hover': {
this.el.addEventListener('mouseenter', this.show.bind(this), false);
this.el.addEventListener('mouseleave', this.hide.bind(this), true);
break;
}
case 'focus': {
this.el.addEventListener('focus', this.show.bind(this), false);
this.el.addEventListener('blur', this.hide.bind(this), true);
break;
}
default:
throw new Error(`This ${event} is not defined.`);
}
});
}
removeEventListener() {
let listeners = this.listeners;
let elems = [this.el, document];
this.options.triggers.forEach((event) => {// тут я понял что можно было коллекцию сделать через события, но я думаю мысель понятна
elems.forEach(el => {
if (!listeners.has(el)) {
return;
}
let model = listeners.get(el);
if(!(event in model)){
return;
}
let handlers=model[event];
handlers.forEach(handler=>{
console.log(el,event,handler)
el.removeEventListener(event,handler);
})
})
})
}
}
const flattenArr = (arr) => {
const flatArray = [];
const parseArray = (arr) => {
arr.forEach(item => Array.isArray(item) ? parseArray(item) : flatArray.push(item))
}
parseArray(arr)
return flatArray
}
constructor({ closable = true }) {
this.isClosable = closable;
}
this.isClosable = props.hasOwnProperty('closable') ? props.closable : true;
this.isClosable = props.closable === undefined ? true : props.closable;
var props1 = {closable: false, foo: 'bar'}
var isClosable1 = props1.closable !== undefined ? props1.closable : true;
var props2 = {foo: 'bar'}
var isClosable2 = props2.closable !== undefined ? props2.closable : true;
console.log(isClosable1, isClosable2)