Skip to content

Instantly share code, notes, and snippets.

@CodeCouturiers
Created August 8, 2024 10:22
Show Gist options
  • Save CodeCouturiers/8d13a87409a54732073ea9534376c3ef to your computer and use it in GitHub Desktop.
Save CodeCouturiers/8d13a87409a54732073ea9534376c3ef to your computer and use it in GitHub Desktop.
@CodeCouturiers
Copy link
Author

ЛІЦЕНЗІЙНИЙ ДОГОВІР

на право використання комп'ютерної програми у мережі Інтернет

м. [Місто] [Дата]

Фізична особа-підприємець [ПІБ автора], що діє на підставі виписки з Єдиного державного реєстру юридичних осіб, фізичних осіб-підприємців та громадських формувань (далі - "Ліцензіар"), з однієї сторони, та

Фізична особа-підприємець [ПІБ покупця], що діє на підставі виписки з Єдиного державного реєстру юридичних осіб, фізичних осіб-підприємців та громадських формувань (далі - "Ліцензіат"), з іншої сторони,

разом іменовані "Сторони", а кожна окремо - "Сторона", уклали цей Ліцензійний договір (далі - "Договір") про наступне:

1. ПРЕДМЕТ ДОГОВОРУ

1.1. Ліцензіар надає Ліцензіату невиключне право (невиключну ліцензію) на використання комп'ютерної програми "[Назва програми]" (далі - "Програма") у мережі Інтернет на умовах, визначених цим Договором.

1.2. Виключні майнові права на Програму належать Ліцензіару.

1.3. Доступ до Програми надається Ліцензіату через веб-інтерфейс за адресою: [URL адреса програми].

2. ОБСЯГ ПРАВ, ЩО ПЕРЕДАЮТЬСЯ

2.1. Ліцензіат має право використовувати Програму наступними способами:

  • отримувати доступ до Програми через веб-інтерфейс;
  • використовувати функціональні можливості Програми відповідно до її призначення;
  • створювати резервні копії даних, що обробляються Програмою, в межах, передбачених функціоналом Програми.

2.2. Ліцензіат не має права:

  • надавати доступ до Програми третім особам;
  • здійснювати декомпіляцію, модифікацію або реверс-інжиніринг Програми;
  • використовувати Програму для створення похідних продуктів;
  • копіювати, відтворювати або поширювати Програму або її частини.

2.3. Територія дії ліцензії - без обмежень (worldwide).

2.4. Строк дії ліцензії - 1 (один) рік з можливістю автоматичного продовження на наступний рік за умови оплати ліцензійної винагороди.

3. ЛІЦЕНЗІЙНА ВИНАГОРОДА

3.1. За надання прав, передбачених цим Договором, Ліцензіат сплачує Ліцензіару щомісячну винагороду у розмірі [сума] гривень.

3.2. Оплата здійснюється щомісяця, не пізніше 5 числа поточного місяця, шляхом безготівкового перерахування коштів на рахунок Ліцензіара.

3.3. У разі прострочення оплати Ліцензіат сплачує пеню у розмірі 0,5% від суми заборгованості за кожен день прострочення. При простроченні оплати більше ніж на 10 днів, Ліцензіар має право призупинити доступ Ліцензіата до Програми до моменту повного погашення заборгованості.

4. НАДАННЯ ДОСТУПУ ДО ПРОГРАМИ

4.1. Протягом 2 робочих днів після отримання першої оплати Ліцензіар надає Ліцензіату дані для доступу до Програми (логін та пароль).

4.2. Факт надання доступу до Програми підтверджується Актом надання доступу.

5. ГАРАНТІЇ ТА ВІДПОВІДАЛЬНІСТЬ

5.1. Ліцензіар гарантує, що має всі необхідні права для укладення цього Договору.

5.2. Ліцензіар гарантує працездатність Програми відповідно до її документації за умови використання рекомендованих технічних засобів та програмного забезпечення.

5.3. Ліцензіар не несе відповідальності за:

  • будь-які збитки, включаючи втрату прибутку, спричинені використанням або неможливістю використання Програми;
  • втрату або пошкодження даних Ліцензіата;
  • наслідки, спричинені несанкціонованим доступом третіх осіб до Програми з використанням облікових даних Ліцензіата.

5.4. У разі порушення умов Договору Ліцензіатом, Ліцензіар має право в односторонньому порядку розірвати Договір та вимагати відшкодування збитків.

6. КОНФІДЕНЦІЙНІСТЬ ТА ЗАХИСТ ДАНИХ

6.1. Сторони зобов'язуються зберігати в таємниці всю конфіденційну інформацію, отриману в ході виконання цього Договору, і не розголошувати її третім особам без попередньої письмової згоди іншої Сторони.

6.2. Ліцензіар зобов'язується забезпечити захист персональних даних, що обробляються Програмою, відповідно до вимог чинного законодавства України.

7. ТЕХНІЧНА ПІДТРИМКА

7.1. Ліцензіар надає Ліцензіату технічну підтримку щодо використання Програми в обсязі та на умовах, визначених у Додатку до цього Договору.

8. ВИРІШЕННЯ СПОРІВ

8.1. Усі спори, що виникають з цього Договору або пов'язані із ним, вирішуються шляхом переговорів між Сторонами.

8.2. Якщо відповідний спір неможливо вирішити шляхом переговорів, він вирішується в судовому порядку за встановленою підвідомчістю та підсудністю такого спору відповідно до чинного законодавства України.

9. СТРОК ДІЇ ДОГОВОРУ ТА ПОРЯДОК ЙОГО РОЗІРВАННЯ

9.1. Цей Договір набирає чинності з моменту його підписання Сторонами та діє протягом строку дії ліцензії, зазначеного в п. 2.4 цього Договору.

9.2. Ліцензіар має право в односторонньому порядку розірвати цей Договір у разі порушення Ліцензіатом його умов, письмово повідомивши про це Ліцензіата за 10 днів до дати розірвання.

9.3. Ліцензіат має право відмовитися від Договору, письмово повідомивши про це Ліцензіара за 30 днів до бажаної дати розірвання.

9.4. У разі розірвання Договору Ліцензіат зобов'язаний припинити використання Програми та видалити всі її копії та дані, отримані за допомогою Програми.

10. ІНШІ УМОВИ

10.1. Цей Договір складений українською мовою у двох автентичних примірниках, по одному для кожної зі Сторін.

10.2. У випадках, не передбачених цим Договором, Сторони керуються чинним законодавством України.

10.3. Зміни і доповнення до цього Договору можуть бути внесені за взаємною згодою Сторін шляхом укладання додаткових угод.

10.4. Ліцензіат не має права передавати свої права та обов'язки за цим Договором третім особам без письмової згоди Ліцензіара.

10.5. Ліцензіат надає згоду на збір та обробку його персональних даних Ліцензіаром в обсязі, необхідному для виконання цього Договору.

11. РЕКВІЗИТИ ТА ПІДПИСИ СТОРІН

Ліцензіар:
ФОП [ПІБ]
РНОКПП: [номер]
Адреса: [адреса]
р/р [номер рахунку]
в [назва банку], МФО [код]

________________ [підпис]

Ліцензіат:
ФОП [ПІБ]
РНОКПП: [номер]
Адреса: [адреса]
р/р [номер рахунку]
в [назва банку], МФО [код]

________________ [підпис]

@CodeCouturiers
Copy link
Author

ДОГОВІР
про надання послуг (виконання робіт) у сфері інформатизації

м. Київ «» ________ 20 р.

Товариство з обмеженою відповідальністю «IT-РОЗРОБНИК-УКРАЇНА» (Ідентифікаційний код _____________), в особі директора ______________, який діє на підставі Статуту, іменоване надалі «Замовник» з однієї сторони, та

Фізична особа-підприємець ____________________, іменований надалі «Виконавець», з іншої сторони,

разом іменовані «Сторони», а окремо – «Сторона», уклали цей Договір про надання послуг (виконання робіт) у сфері інформатизації (надалі – «Договір») про наступне:

  1. ПРЕДМЕТ ДОГОВОРУ

1.1. Відповідно до умов цього Договору Виконавець зобов'язується надати послуги та виконати роботи у сфері інформатизації (надалі – Послуги/Роботи), а саме:

  • розробка програмного забезпечення (конкретизувати тип ПЗ);
  • тестування програмного забезпечення;
  • надання консультацій з питань інформатизації;
  • оброблення даних;
  • інші послуги/роботи, пов'язані з програмним забезпеченням.

1.2. Детальний опис Послуг/Робіт, вимоги до них, строки виконання та інші умови визначаються у Технічному завданні (Додаток № 1), яке є невід'ємною частиною цього Договору.

  1. ПРАВА ТА ОБОВ'ЯЗКИ СТОРІН

2.1. Замовник зобов'язаний:
2.1.1. Своєчасно надавати Виконавцю всю необхідну для виконання Послуг/Робіт інформацію та матеріали.
2.1.2. Прийняти та оплатити належним чином надані Послуги/Роботи.

2.2. Замовник має право:
2.2.1. Контролювати процес надання Послуг/Робіт.
2.2.2. Вимагати від Виконавця усунення недоліків, виявлених під час приймання Послуг/Робіт.

2.3. Виконавець зобов'язаний:
2.3.1. Надати Послуги/Роботи якісно та в строки, визначені цим Договором.
2.3.2. Передати Замовнику результати Послуг/Робіт, включаючи вихідний код, документацію та інші матеріали.
2.3.3. Не розголошувати конфіденційну інформацію Замовника.

2.4. Виконавець має право:
2.4.1. Отримувати від Замовника інформацію, необхідну для надання Послуг/Робіт.
2.4.2. Залучати третіх осіб для виконання цього Договору за письмовою згодою Замовника.

  1. ВАРТІСТЬ ПОСЛУГ/РОБІТ ТА ПОРЯДОК РОЗРАХУНКІВ

3.1. Загальна вартість Послуг/Робіт за цим Договором становить _______ грн (__________ гривень __ копійок), без ПДВ.

3.2. Оплата здійснюється в наступному порядку:

  • 30% від вартості - протягом 5 банківських днів з моменту підписання Договору;
  • 70% від вартості - протягом 5 банківських днів після підписання Акту приймання-передачі наданих Послуг/Робіт.

3.3. Авторська винагорода за передачу виключних майнових прав на створені об'єкти авторського права включена до вартості Послуг/Робіт і становить _______ грн (__________ гривень __ копійок). Дана сума є паушальним платежем.

  1. ПОРЯДОК ЗДАЧІ-ПРИЙМАННЯ ПОСЛУГ/РОБІТ

4.1. Після завершення надання Послуг/Робіт Виконавець надає Замовнику два примірники підписаного Акту приймання-передачі наданих Послуг/Робіт.

4.2. Замовник протягом 5 робочих днів з моменту отримання Акту зобов'язаний підписати його або надати мотивовану відмову.

4.3. У разі мотивованої відмови Сторони складають двосторонній акт з переліком необхідних доопрацювань та строків їх виконання.

  1. ПРАВА ІНТЕЛЕКТУАЛЬНОЇ ВЛАСНОСТІ

5.1. Виконавець передає Замовнику виключні майнові права на створені в рамках цього Договору об'єкти авторського права в повному обсязі для будь-якого використання будь-яким способом на весь строк дії авторського права.

5.2. До виключних майнових прав, що передаються Замовнику, належать:

  • право на використання об'єкта авторського права;
  • виключне право дозволяти використання об'єкта авторського права;
  • виключне право перешкоджати неправомірному використанню об'єкта авторського права, в тому числі забороняти таке використання;
  • інші майнові права інтелектуальної власності, встановлені законом.

5.3. Виконавець гарантує, що створені ним об'єкти авторського права не порушують прав третіх осіб. У разі пред'явлення претензій третіми особами Виконавець зобов'язується врегулювати такі претензії самостійно і за власний рахунок.

  1. ВІДПОВІДАЛЬНІСТЬ СТОРІН

6.1. За порушення умов цього Договору винна Сторона відшкодовує завдані цим збитки в повному обсязі, в порядку, передбаченому чинним законодавством України.

6.2. За порушення строків оплати Замовник сплачує пеню у розмірі подвійної облікової ставки НБУ від суми заборгованості за кожен день прострочення.

6.3. За порушення строків надання Послуг/Робіт Виконавець сплачує пеню в розмірі 0,1% від вартості несвоєчасно наданих Послуг/Робіт за кожен день прострочення.

  1. ВИРІШЕННЯ СПОРІВ

7.1. Усі спори, що виникають з цього Договору або пов'язані із ним, вирішуються шляхом переговорів між Сторонами.

7.2. Якщо відповідний спір не можливо вирішити шляхом переговорів, він вирішується в судовому порядку за встановленою підвідомчістю та підсудністю такого спору відповідно до чинного законодавства України.

  1. СТРОК ДІЇ ДОГОВОРУ

8.1. Цей Договір набуває чинності з моменту його підписання і діє до повного виконання Сторонами своїх зобов'язань за цим Договором.

  1. ІНШІ УМОВИ

9.1. Цей Договір складений при повному розумінні Сторонами його умов та термінології українською мовою у двох автентичних примірниках, які мають однакову юридичну силу, - по одному для кожної із Сторін.

9.2. Зміни і доповнення до цього Договору можуть бути внесені за взаємною згодою Сторін шляхом укладання додаткових угод.

  1. РЕКВІЗИТИ ТА ПІДПИСИ СТОРІН

ЗАМОВНИК ВИКОНАВЕЦЬ
ТОВ "IT-РОЗРОБНИК-УКРАЇНА" ФОП __________________
Код ЄДРПОУ: ______________ ІПН: __________________
р/р ____________________ р/р ____________________
в ______________________ в ______________________
МФО ___________________ МФО ___________________
Адреса: ________________ Адреса: ________________
Тел.: __________________ Тел.: __________________

Директор Фізична особа-підприємець

____________ // ____________ //
м.п. м.п.

@CodeCouturiers
Copy link
Author

СУБПІДРЯДНИЙ ДОГОВІР
про надання послуг (виконання робіт) у сфері інформатизації

м. Київ «» ________ 20 р.

Товариство з обмеженою відповідальністю «IT-РОЗРОБНИК-УКРАЇНА» (Ідентифікаційний код _____________), в особі директора ______________, який діє на підставі Статуту, іменоване надалі «Генеральний підрядник» з однієї сторони, та

Фізична особа-підприємець ____________________, іменований надалі «Субпідрядник», з іншої сторони,

разом іменовані «Сторони», а окремо – «Сторона», уклали цей Субпідрядний договір про надання послуг (виконання робіт) у сфері інформатизації (надалі – «Договір») про наступне:

  1. ПРЕДМЕТ ДОГОВОРУ

1.1. Генеральний підрядник доручає, а Субпідрядник зобов'язується надати послуги та виконати роботи у сфері інформатизації (надалі – Послуги/Роботи) відповідно до Технічного завдання (Додаток № 1), яке є невід'ємною частиною цього Договору.

1.2. Послуги/Роботи надаються/виконуються Субпідрядником в рамках виконання Генеральним підрядником договору №___ від ..20___ р. з ________________ (надалі – «Замовник»).

  1. ПРАВА ТА ОБОВ'ЯЗКИ СТОРІН

2.1. Генеральний підрядник зобов'язаний:
2.1.1. Надати Субпідряднику необхідну для виконання Послуг/Робіт інформацію та матеріали.
2.1.2. Прийняти та оплатити належним чином надані Послуги/Роботи.

2.2. Генеральний підрядник має право:
2.2.1. Контролювати процес надання Послуг/Робіт Субпідрядником.
2.2.2. Вимагати від Субпідрядника усунення недоліків, виявлених під час приймання Послуг/Робіт.

2.3. Субпідрядник зобов'язаний:
2.3.1. Надати Послуги/Роботи якісно та в строки, визначені цим Договором.
2.3.2. Передати Генеральному підряднику результати Послуг/Робіт, включаючи вихідний код, документацію та інші матеріали.
2.3.3. Не розголошувати конфіденційну інформацію Генерального підрядника та Замовника.
2.3.4. Не вступати в прямі контакти з Замовником без згоди Генерального підрядника.

2.4. Субпідрядник має право:
2.4.1. Отримувати від Генерального підрядника інформацію, необхідну для надання Послуг/Робіт.
2.4.2. Отримати оплату за надані Послуги/Роботи.

  1. ВАРТІСТЬ ПОСЛУГ/РОБІТ ТА ПОРЯДОК РОЗРАХУНКІВ

3.1. Загальна вартість Послуг/Робіт за цим Договором становить _______ грн (__________ гривень __ копійок), без ПДВ.

3.2. Оплата здійснюється в наступному порядку:

  • 30% від вартості - протягом 5 банківських днів з моменту підписання Договору;
  • 70% від вартості - протягом 5 банківських днів після підписання Акту приймання-передачі наданих Послуг/Робіт.

3.3. Генеральний підрядник здійснює оплату Субпідряднику після отримання оплати від Замовника за відповідний етап робіт.

  1. ПОРЯДОК ЗДАЧІ-ПРИЙМАННЯ ПОСЛУГ/РОБІТ

4.1. Після завершення надання Послуг/Робіт Субпідрядник надає Генеральному підряднику два примірники підписаного Акту приймання-передачі наданих Послуг/Робіт.

4.2. Генеральний підрядник протягом 5 робочих днів з моменту отримання Акту зобов'язаний підписати його або надати мотивовану відмову.

4.3. У разі мотивованої відмови Сторони складають двосторонній акт з переліком необхідних доопрацювань та строків їх виконання.

  1. ПРАВА ІНТЕЛЕКТУАЛЬНОЇ ВЛАСНОСТІ

5.1. Субпідрядник передає Генеральному підряднику виключні майнові права на створені в рамках цього Договору об'єкти авторського права в повному обсязі для будь-якого використання будь-яким способом на весь строк дії авторського права.

5.2. Субпідрядник гарантує, що створені ним об'єкти авторського права не порушують прав третіх осіб. У разі пред'явлення претензій третіми особами Субпідрядник зобов'язується врегулювати такі претензії самостійно і за власний рахунок.

5.3. Субпідрядник не має права використовувати створені в рамках цього Договору об'єкти авторського права у власних цілях або передавати права на них третім особам.

  1. КОНФІДЕНЦІЙНІСТЬ

6.1. Субпідрядник зобов'язується зберігати в таємниці всю конфіденційну інформацію, отриману від Генерального підрядника та Замовника в ході виконання цього Договору, і не розголошувати її третім особам без попередньої письмової згоди Генерального підрядника.

6.2. До конфіденційної інформації належать будь-які дані, матеріали, документи, комерційна інформація, що стосуються діяльності Генерального підрядника та Замовника.

6.3. Зобов'язання щодо конфіденційності зберігають свою силу протягом 5 років після припинення дії цього Договору.

  1. ВІДПОВІДАЛЬНІСТЬ СТОРІН

7.1. За порушення умов цього Договору винна Сторона відшкодовує завдані цим збитки в повному обсязі.

7.2. За порушення строків оплати Генеральний підрядник сплачує пеню у розмірі подвійної облікової ставки НБУ від суми заборгованості за кожен день прострочення.

7.3. За порушення строків надання Послуг/Робіт Субпідрядник сплачує пеню в розмірі 0,1% від вартості несвоєчасно наданих Послуг/Робіт за кожен день прострочення.

7.4. Субпідрядник несе повну відповідальність перед Генеральним підрядником за якість та своєчасність наданих Послуг/Робіт.

  1. СТРОК ДІЇ ДОГОВОРУ

8.1. Цей Договір набуває чинності з моменту його підписання і діє до повного виконання Сторонами своїх зобов'язань за цим Договором.

  1. ІНШІ УМОВИ

9.1. Цей Договір складений при повному розумінні Сторонами його умов та термінології українською мовою у двох автентичних примірниках, які мають однакову юридичну силу, - по одному для кожної із Сторін.

9.2. Зміни і доповнення до цього Договору можуть бути внесені за взаємною згодою Сторін шляхом укладання додаткових угод.

9.3. У всьому іншому, що не передбачено цим Договором, Сторони керуються чинним законодавством України.

  1. РЕКВІЗИТИ ТА ПІДПИСИ СТОРІН

ГЕНЕРАЛЬНИЙ ПІДРЯДНИК СУБПІДРЯДНИК
ТОВ "IT-РОЗРОБНИК-УКРАЇНА" ФОП __________________
Код ЄДРПОУ: ______________ ІПН: __________________
р/р ____________________ р/р ____________________
в ______________________ в ______________________
МФО ___________________ МФО ___________________
Адреса: ________________ Адреса: ________________
Тел.: __________________ Тел.: __________________

Директор Фізична особа-підприємець

____________ // ____________ //
м.п. м.п.

@CodeCouturiers
Copy link
Author

Для відповіді на це питання розглянемо основні законодавчі акти та норми, що регулюють підписання договорів в Україні:

  1. Основні законодавчі акти:
  • Цивільний кодекс України (ЦКУ)
  • Господарський кодекс України (ГКУ)
  • Закон України "Про електронні документи та електронний документообіг"
  • Закон України "Про електронні довірчі послуги"
  1. Форма договору:

Згідно зі ст. 205 ЦКУ, правочин може вчинятися усно або в письмовій (електронній) формі. Сторони мають право обирати форму правочину, якщо інше не встановлено законом.

Ст. 207 ЦКУ визначає, що правочин вважається таким, що вчинений у письмовій формі, якщо його зміст зафіксований в одному або кількох документах (у тому числі електронних), у листах, телеграмах, якими обмінялися сторони.

  1. Порядок укладення договору:

Ст. 638 ЦКУ встановлює, що договір є укладеним, якщо сторони в належній формі досягли згоди з усіх істотних умов договору. Договір укладається шляхом пропозиції однієї сторони укласти договір (оферти) і прийняття пропозиції (акцепту) другою стороною.

  1. Електронна форма договору:

Згідно зі ст. 205 ЦКУ, правочин вважається вчиненим в електронній формі, якщо воля сторін виражена за допомогою електронних засобів зв'язку.

Закон України "Про електронні документи та електронний документообіг" визначає, що електронний документ, підписаний електронним підписом, має таку ж юридичну силу, як і паперовий документ з власноручним підписом.

  1. Правомірність:

Укладення договорів є правомірним, якщо дотримано всіх вимог законодавства щодо форми, змісту та порядку укладення договору. Основні вимоги:

  • Дієздатність сторін (ст. 203 ЦКУ)
  • Відповідність змісту договору вимогам законодавства (ст. 203 ЦКУ)
  • Дотримання встановленої законом форми (ст. 203 ЦКУ)
  • Вільне волевиявлення сторін (ст. 203 ЦКУ)
  • Спрямованість на реальне настання правових наслідків (ст. 203 ЦКУ)

Висновок:

Законодавство України детально регулює процес підписання договорів, встановлюючи вимоги до їх форми, змісту та порядку укладення. Підписання договорів є правомірним, якщо дотримано всіх законодавчих вимог.

Важливо зазначити, що сучасне законодавство визнає юридичну силу електронних договорів нарівні з паперовими, що особливо актуально для сфери інформатизації.

При укладенні договорів у сфері інформатизації необхідно також враховувати специфічні норми, передбачені спеціальним законодавством, наприклад, Законом України "Про авторське право і суміжні права" щодо передачі прав на об'єкти інтелектуальної власності.

Отже, підписання договорів, у тому числі в електронній формі, є цілком правомірним за умови дотримання всіх вимог чинного законодавства.

@CodeCouturiers
Copy link
Author

Як фізична особа-підприємець (ФОП), ви маєте право укладати договори відповідно до Цивільного кодексу України (ЦКУ). Розглянемо основні аспекти підписання договорів для ФОП:

  1. Правовий статус ФОП:

ФОП має право укладати договори від свого імені як суб'єкт підприємницької діяльності. Згідно зі ст. 51 ЦКУ, до підприємницької діяльності фізичних осіб застосовуються нормативно-правові акти, що регулюють підприємницьку діяльність юридичних осіб, якщо інше не встановлено законом або не випливає із суті відносин.

  1. Форма договору:

Відповідно до ст. 205 ЦКУ, ви можете укладати договори у письмовій (включаючи електронну) формі. Для більшості договорів достатньо простої письмової форми.

  1. Підписання договору:

Як ФОП, ви підписуєте договір особисто, вказуючи своє повне ім'я та реєстраційні дані. Типовий формат підпису:

Фізична особа-підприємець [Прізвище, Ім'я, По батькові]
РНОКПП: [Ваш ідентифікаційний код]
Місце реєстрації: [Адреса]
Підпис: _______________
  1. Використання печатки:

З 19 липня 2017 року використання печатки не є обов'язковим для ФОП (Закон України "Про внесення змін до деяких законодавчих актів України щодо використання печаток юридичними особами та фізичними особами-підприємцями"). Ви можете використовувати печатку за бажанням, але її відсутність не може бути підставою для визнання договору недійсним.

  1. Електронне підписання:

Ви маєте право підписувати договори електронним підписом. Згідно із Законом України "Про електронні довірчі послуги", кваліфікований електронний підпис має таку ж юридичну силу, як і власноручний підпис.

  1. Особливості для різних видів договорів:
  • Для договорів, сума яких перевищує 20 прожиткових мінімумів, встановлених для працездатних осіб, рекомендується письмова форма (ст. 208 ЦКУ).
  • Деякі види договорів (наприклад, договори оренди нерухомості на строк більше 3 років) вимагають нотаріального посвідчення.
  1. Реквізити договору:

У договорі обов'язково вказуйте свої реквізити як ФОП:

  • Повне ім'я
  • РНОКПП (реєстраційний номер облікової картки платника податків)
  • Номер та дата запису в Єдиному державному реєстрі
  • Місце реєстрації
  • Банківські реквізити (за необхідності)
  1. Податкові аспекти:

Пам'ятайте, що як ФОП ви зобов'язані вести облік доходів і витрат. Укладені договори є підставою для відображення господарських операцій.

Висновок:

Як ФОП, ви можете підписувати договори особисто, використовуючи просту письмову або електронну форму. Важливо правильно вказувати свої реквізити та дотримуватися вимог законодавства щодо форми договору для конкретних видів правочинів. Використання печатки є необов'язковим, а електронний підпис має таку ж юридичну силу, як і власноручний.

@CodeCouturiers
Copy link
Author

image

@CodeCouturiers
Copy link
Author

CodeCouturiers commented Aug 9, 2024

using System;
using System.IO;
using System.Collections.Generic;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.Drawing;
using System.Drawing.Drawing2D;

class Program
{
    static Random random = new Random();

    static List<string> ukrainianNames = new List<string>
    {
        "Петро Іваненко", "Олена Коваленко", "Микола Шевченко", "Ірина Бондаренко", "Андрій Мельник",
        "Оксана Ткаченко", "Василь Кравченко", "Наталія Савченко", "Сергій Бойко", "Людмила Захарченко"
    };

    static string GetRandomName()
    {
        return ukrainianNames[random.Next(ukrainianNames.Count)];
    }

    static string GetRandomDate()
    {
        return $"{random.Next(1, 29):D2} {new string[] { "січня", "лютого", "березня", "квітня", "травня", "червня", "липня", "серпня", "вересня", "жовтня", "листопада", "грудня" }[random.Next(12)]} {DateTime.Now.Year}";
    }

    static string GetRandomId()
    {
        return random.Next(10000000, 99999999).ToString();
    }

    static void Main(string[] args)
    {
        // Create a document with A4 size and margins
        Document document = new Document(PageSize.A4, 30, 30, 30, 30);

        try
        {
            PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("Договір.pdf", FileMode.Create));
            document.Open();

            // Зменшуємо розміри шрифтів
            BaseFont baseFont = BaseFont.CreateFont("C:\\Windows\\Fonts\\Arial.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            iTextSharp.text.Font normalFont = new iTextSharp.text.Font(baseFont, 8, iTextSharp.text.Font.NORMAL);
            iTextSharp.text.Font boldFont = new iTextSharp.text.Font(baseFont, 8, iTextSharp.text.Font.BOLD);
            iTextSharp.text.Font titleFont = new iTextSharp.text.Font(baseFont, 12, iTextSharp.text.Font.BOLD);

            // Add a formal title section
            Paragraph title = new Paragraph("АКТ ПРИЙМАННЯ-ПЕРЕДАЧІ НАДАНИХ ПОСЛУГ/РОБІТ", titleFont);
            title.Alignment = Element.ALIGN_CENTER;
            document.Add(title);
            document.Add(new Paragraph("\n"));

            // Add header with company information
            PdfPTable headerTable = new PdfPTable(1);
            headerTable.WidthPercentage = 100;
            headerTable.DefaultCell.Border = iTextSharp.text.Rectangle.NO_BORDER;

            // Company name and document title
            PdfPCell titleCell = new PdfPCell(new Phrase("ТОВ \"IT-РОЗРОБНИК-УКРАЇНА\"\nм. Київ", normalFont));
            titleCell.HorizontalAlignment = Element.ALIGN_CENTER;
            titleCell.VerticalAlignment = Element.ALIGN_MIDDLE;
            titleCell.Border = iTextSharp.text.Rectangle.NO_BORDER;
            headerTable.AddCell(titleCell);

            document.Add(headerTable);
            document.Add(new Paragraph("\n"));

            // Information about date and place
            string randomDate = GetRandomDate();
            Paragraph datePlace = new Paragraph($"м. Київ                                                                     «{randomDate}»", normalFont);
            datePlace.Alignment = Element.ALIGN_RIGHT;
            document.Add(datePlace);
            document.Add(new Paragraph("\n"));

            // Main text
            string companyId = GetRandomId();
            string directorName = GetRandomName();
            string contractorName = GetRandomName();

            Paragraph mainText = new Paragraph();
            mainText.Add(new Chunk("Товариство з обмеженою відповідальністю «IT-РОЗРОБНИК-УКРАЇНА»", boldFont));
            mainText.Add(new Chunk($" (Ідентифікаційний код {companyId}), в особі директора {directorName}, який діє на підставі Статуту, іменоване надалі «Замовник», з однієї сторони, та\n", normalFont));
            mainText.Add(new Chunk($"Фізична особа-підприємець {contractorName}", boldFont));
            mainText.Add(new Chunk(", іменований надалі «Виконавець», з іншої сторони, склали цей Акт приймання-передачі наданих Послуг/Робіт (надалі – Акт) про наступне:\n\n", normalFont));
            mainText.Add(new Chunk("1. ", boldFont));
            mainText.Add(new Chunk($"На виконання Договору про надання послуг (виконання робіт) у сфері інформатизації № {random.Next(1, 100)} від «{GetRandomDate()}» Виконавець надав, а Замовник прийняв наступні Послуги/Роботи:", normalFont));
            document.Add(mainText);
            document.Add(new Paragraph("\n"));

            // Service table
            PdfPTable table = new PdfPTable(6);
            table.WidthPercentage = 100;
            table.SetWidths(new float[] { 1f, 4f, 3f, 2f, 3f, 2f });
            table.DefaultCell.Padding = 5;
            table.DefaultCell.BackgroundColor = new BaseColor(240, 240, 240);

            string[] headers = { "№", "Найменування Послуги", "Одиниця виміру", "Кількість", "Ціна за од., грн", "Сума, грн" };
            foreach (string header in headers)
            {
                PdfPCell cell = new PdfPCell(new Phrase(header, boldFont));
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                cell.VerticalAlignment = Element.ALIGN_MIDDLE;
                cell.BackgroundColor = new BaseColor(220, 220, 220);
                table.AddCell(cell);
            }

            int totalSum = 0;
            string[][] data = {
                new string[] { "1", "Послуги з розробки програмного забезпечення (72210000-0)", "година", $"{random.Next(50, 150)}", $"{random.Next(400, 800)}" },
                new string[] { "2", "Послуги з системного аналізу (72240000-9)", "година", $"{random.Next(20, 80)}", $"{random.Next(500, 900)}" },
                new string[] { "3", "Послуги з тестування програмного забезпечення (72254000-0)", "година", $"{random.Next(20, 60)}", $"{random.Next(300, 600)}" }
            };

            foreach (string[] row in data)
            {
                int quantity = int.Parse(row[3]);
                int price = int.Parse(row[4]);
                int sum = quantity * price;
                totalSum += sum;
                
                foreach (string cell in row)
                {
                    table.AddCell(new PdfPCell(new Phrase(cell, normalFont)) { HorizontalAlignment = Element.ALIGN_CENTER, VerticalAlignment = Element.ALIGN_MIDDLE });
                }
                table.AddCell(new PdfPCell(new Phrase(sum.ToString(), normalFont)) { HorizontalAlignment = Element.ALIGN_CENTER, VerticalAlignment = Element.ALIGN_MIDDLE });
            }

            document.Add(table);
            document.Add(new Paragraph("\n"));

            // Additional information
            Paragraph additionalInfo = new Paragraph();
            additionalInfo.Add(new Chunk("2. ", boldFont));
            additionalInfo.Add(new Chunk($"Загальна вартість наданих Послуг/Робіт становить {totalSum} грн ({NumberToWords(totalSum)} гривень 00 копійок), без ПДВ.\n", normalFont));
            additionalInfo.Add(new Chunk("3. ", boldFont));
            additionalInfo.Add(new Chunk("Послуги/Роботи надані в повному обсязі, своєчасно та якісно відповідно до умов Договору. Замовник претензій до обсягу, якості та строків надання Послуг/Робіт не має.\n", normalFont));
            additionalInfo.Add(new Chunk("4. ", boldFont));
            additionalInfo.Add(new Chunk("Цей Акт складено у двох примірниках, що мають однакову юридичну силу, по одному для кожної зі Сторін.", normalFont));
            document.Add(additionalInfo);
            document.Add(new Paragraph("\n"));

            // Signatures
            PdfPTable signatureTable = new PdfPTable(2);
            signatureTable.WidthPercentage = 100;
            signatureTable.SetWidths(new float[] { 1f, 1f });
            signatureTable.DefaultCell.Padding = 10;
            signatureTable.DefaultCell.BorderWidth = 1;
            signatureTable.DefaultCell.BorderColor = BaseColor.LIGHT_GRAY;

            PdfPCell customerCell = new PdfPCell();
            customerCell.AddElement(new Paragraph("ЗАМОВНИК", boldFont));
            customerCell.AddElement(new Paragraph("ТОВ \"IT-РОЗРОБНИК-УКРАЇНА\"", normalFont));
            customerCell.AddElement(new Paragraph($"Код ЄДРПОУ: {companyId}", normalFont));
            customerCell.AddElement(new Paragraph("Директор", normalFont));
            customerCell.AddElement(new Paragraph("\n"));

            // Add random signature for customer
            iTextSharp.text.Image customerSignature = CreateRandomSignature(directorName);
            customerCell.AddElement(customerSignature);
            
            customerCell.AddElement(new Paragraph($"____________ /{directorName}/", normalFont));
            customerCell.AddElement(new Paragraph("       м.п.", normalFont));
            customerCell.AddElement(new Paragraph("\n"));

            customerCell.BorderWidth = 1;
            customerCell.BorderColor = BaseColor.LIGHT_GRAY;
            customerCell.PaddingBottom = 20;

            PdfPCell executorCell = new PdfPCell();
            executorCell.AddElement(new Paragraph("ВИКОНАВЕЦЬ", boldFont));
            executorCell.AddElement(new Paragraph($"ФОП {contractorName}", normalFont));
            executorCell.AddElement(new Paragraph($"ІПН: {GetRandomId()}", normalFont));
            executorCell.AddElement(new Paragraph("Фізична особа-підприємець", normalFont));
            executorCell.AddElement(new Paragraph("\n"));

            // Add random signature for executor
            iTextSharp.text.Image executorSignature = CreateRandomSignature(contractorName);
            executorCell.AddElement(executorSignature);
            
            executorCell.AddElement(new Paragraph($"____________ /{contractorName}/", normalFont));
            executorCell.AddElement(new Paragraph("       м.п.", normalFont));
            executorCell.AddElement(new Paragraph("\n"));

            executorCell.BorderWidth = 1;
            executorCell.BorderColor = BaseColor.LIGHT_GRAY;
            executorCell.PaddingBottom = 20;

            signatureTable.AddCell(customerCell);
            signatureTable.AddCell(executorCell);

            document.Add(signatureTable);
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
        finally
        {
            document.Close();
        }

        Console.WriteLine("PDF створено успішно.");
    }

    static iTextSharp.text.Image CreateRandomSignature(string name)
    {
        int originalWidth = 200;
        int originalHeight = 100;
        float scale = 1f; //(зменшення)
        int width = (int)(originalWidth * scale);
        int height = (int)(originalHeight * scale);

        Bitmap originalBitmap = new Bitmap(originalWidth, originalHeight);
        using (Graphics graphics = Graphics.FromImage(originalBitmap))
        {
            graphics.Clear(Color.White);

            // Create a path for the signature
            using (GraphicsPath path = new GraphicsPath())
            {
                int lastX = random.Next(10, 30);
                int lastY = random.Next(40, 60);
                int points = random.Next(15, 25);

                for (int i = 0; i < points; i++)
                {
                    int newX = random.Next(Math.Max(0, lastX - 30), Math.Min(originalWidth, lastX + 30));
                    int newY = random.Next(Math.Max(0, lastY - 20), Math.Min(originalHeight, lastY + 20));

                    int controlX = (lastX + newX) / 2 + random.Next(-20, 20);
                    int controlY = (lastY + newY) / 2 + random.Next(-20, 20);

                    path.AddBezier(lastX, lastY, controlX, controlY, controlX, controlY, newX, newY);

                    lastX = newX;
                    lastY = newY;
                }

                // Draw the signature with a gradient
                using (LinearGradientBrush brush = new LinearGradientBrush(
                    new Point(0, 0),
                    new Point(originalWidth, originalHeight),
                    Color.FromArgb(random.Next(50, 150), 0, 0, 0),
                    Color.FromArgb(random.Next(150, 256), 0, 0, 0)))
                {
                    using (Pen pen = new Pen(brush, random.Next(2, 4)))
                    {
                        graphics.DrawPath(pen, path);
                    }
                }
            }

            // Add a decorative underline
            using (Pen underlinePen = new Pen(Color.FromArgb(100, 0, 0, 0), 1))
            {
                underlinePen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
                graphics.DrawLine(underlinePen, 10, originalHeight - 10, originalWidth - 10, originalHeight - 10);
            }

            // Add initials with shadow
            using (System.Drawing.Font font = new System.Drawing.Font("Arial", 14, FontStyle.Bold))
            {
                string[] nameParts = name.Split(' ');
                string initials = $"{nameParts[0][0]}.{nameParts[1][0]}.";

                // Draw shadow
                using (SolidBrush shadowBrush = new SolidBrush(Color.FromArgb(50, 0, 0, 0)))
                {
                    graphics.DrawString(initials, font, shadowBrush, originalWidth - 52, originalHeight - 32);
                }

                // Draw initials
                using (SolidBrush brush = new SolidBrush(Color.FromArgb(200, 0, 0, 0)))
                {
                    graphics.DrawString(initials, font, brush, originalWidth - 50, originalHeight - 30);
                }
            }
        }

        // Scale down the image
        Bitmap scaledBitmap = new Bitmap(width, height);
        using (Graphics graphics = Graphics.FromImage(scaledBitmap))
        {
            graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
            graphics.DrawImage(originalBitmap, 0, 0, width, height);
        }

        MemoryStream ms = new MemoryStream();
        scaledBitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
        return iTextSharp.text.Image.GetInstance(ms.ToArray());
    }


    static string NumberToWords(int number)
    {
        // This is a simplified version. For a full implementation, you'd need a more complex algorithm.
        string[] units = { "", "одна", "дві", "три", "чотири", "п'ять", "шість", "сім", "вісім", "дев'ять" };
        string[] teens = { "десять", "одинадцять", "дванадцять", "тринадцять", "чотирнадцять", "п'ятнадцять", "шістнадцять", "сімнадцять", "вісімнадцять", "дев'ятнадцять" };
        string[] tens = { "", "", "двадцять", "тридцять", "сорок", "п'ятдесят", "шістдесят", "сімдесят", "вісімдесят", "дев'яносто" };
        string[] thousands = { "", "тисяча", "тисячі", "тисяч" };

        if (number == 0)
            return "нуль";

        if (number < 0)
            return "мінус " + NumberToWords(Math.Abs(number));

        string words = "";

        if ((number / 1000) > 0)
        {
            words += NumberToWords(number / 1000) + " " + thousands[(number / 1000) % 10] + " ";
            number %= 1000;
        }

        if ((number / 100) > 0)
        {
            words += units[number / 100] + "сот ";
            number %= 100;
        }

        if (number >= 20)
        {
            words += tens[number / 10] + " ";
            number %= 10;
        }

        if (number >= 10)
        {
            words += teens[number - 10] + " ";
            return words;
        }

        if (number > 0)
        {
            words += units[number] + " ";
        }

        return words.Trim();
    }
}

@CodeCouturiers
Copy link
Author

image
image
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment