
„Колко всъщност още ни дължите?“ Този въпрос редовно възниква при всяка клиентска база, най-често малко преди края на тримесечието, преди одита на годишния отчет или когато счетоводството на клиента подготвя плащания. Който не отговори сам, получава въпроса по имейл или телефон, а някой трябва да експортира от счетоводството и да изпрати списък с открити позиции (ОП списък). С Odoo 19 Community това не става от само себе си: клиентският портал показва отделните фактури, но не и списък с откритите позиции на цялата фирма, още по-малко към свободно избран ден.
За целта написахме модула Открити позиции в клиентския портал (portal_open_items) за Odoo 19. Клиентите с активиран достъп виждат в портала списък на всички открити фактури, кредитни известия и все още неразпределени плащания на своята фирма, могат да изберат отчетна дата, да изтеглят списъка като PDF и с един поглед виждат каква е тяхната платежна дисциплина. Модулът е свободен софтуер под лиценза AGPL-3 и се намира в GitHub:
github.com/Alex0176/odoo-portal-open-items
Инсталирахме модула на 5 ноември 2026 г. в нашата продуктивна система. Опцията там е по подразбиране изключена и се задава само след уговорка с отделни клиенти. Опитът от експлоатацията все още е кратък; тествахме с тринадесет автоматични теста и тестова база данни с примерни клиенти. Който въведе модула, трябва да прочете разделите за изчисляване на отчетната дата, за платежната дисциплина и за ограниченията .
Съдържание на статията
- Проблемът: ОП списък при поискване
- Решението накратко
- Разрешение за всеки контакт: опцията
- Списъкът в клиентския портал
- Открити позиции към отчетна дата
- PDF експорт
- Платежна дисциплина: оценка с един поглед
- Кой какво може да вижда? Моделът на достъп
- Техническа реализация
- Тестове
- Инсталиране и настройка
- Ограничения и бележки
- Често задавани въпроси
- Поддръжка от Biricon IT Services
Проблемът: ОП списък при поискване
Списъкът с открити позиции показва кои фактури на клиента още не са платени, кои от тях са просрочени и колко е салдото. За доставчика той е средство за планиране на ликвидността и за напомняне за плащане. За клиента той е основа да планира плащанията, да съпостави фактурите със собственото си счетоводство и да изясни въпроси, без да отваря всяка фактура поотделно. Типични поводи:
- Тримесечно и годишно приключване: Счетоводството на клиента иска да знае какви задължения са съществували към 31.12. Това е отчетна дата в миналото.
- Съгласуване: Клиентът смята, че е платил една фактура, а ние още я виждаме като открита. Общ списък с дата, падеж и сума изяснява това по-бързо от верига от имейли.
- Плащания на партиди: Който подготвя плащания всяка седмица или всеки месец, има нужда от всички открити фактури на един доставчик накуп, с просрочените отгоре.
- Няколко лица за контакт: Във фирмата единият поръчва, другият плаща. Откритите позиции принадлежат на фирмата, а не на отделно лице.
Досега теглехме тези списъци на ръка от счетоводството и ги изпращахме по пощата. Това отнема време и в крайна сметка е моментна снимка, която остарява още на следващия ден. По-добре е клиентът сам да отваря списъка в портала по всяко време, винаги с актуалното състояние.
Решението накратко
Модулът допълва клиентския портал на Odoo със страница Открити позиции и плочка в Моят профил. Функционален обхват:
- Опция за всеки контакт: „Показване на списъка с открити позиции в портала“. Само когато е зададена, потребителят на портала вижда плочката и страницата. По подразбиране е изключена.
- Цялата фирма: Списъкът съдържа откритите позиции на всички контакти на фирмата, а не само на влезлия потребител.
- Отчетна дата: Клиентът избира дата и вижда какво е било открито в този ден.
- PDF експорт: Списъкът като PDF в оформлението на Вашата фирма, с бланка, салдо и сума на просрочените позиции.
- Платежна дисциплина: дял на фактурите, платени навреме, с малко закъснение и късно, най-дълго откритата фактура и оценка добра или лоша, в портала и в PDF.
- Просрочените позиции са маркирани с цвят и показват дните след датата на падежа.
- Кредитни известия и кредити се показват в списъка с отрицателна сума и намаляват салдото.
- Връзка: Всяка фактура в списъка води към изгледа на фактурата в портала.
- Многоезичност: Интерфейсът и PDF следват езика на потребителя, немският превод е включен.

Плочката се появява на началната страница Моят профил до поръчките и фактурите. Който няма опцията, не я вижда.
Разрешение за всеки контакт: опцията
Списъкът с открити позиции показва бизнес данни на цяла фирма. Затова модулът не го разрешава на всички потребители на портала, а само там, където изрично пожелаете. При контакта във формуляра, в раздел Уебсайт, се намира полето за отметка „Показване на списъка с открити позиции в портала“. Видимо е за потребители с права за фактуриране (група account.group_account_invoice) и важи за този един контакт.

Това отговаря на практиката: Във фирмата управлението или счетоводството трябва да виждат списъка, а служител, който само преглежда тикети, не трябва. Опцията важи за контакта, но показаните позиции принадлежат на цялата фирма. Затова задайте опцията при лицето, което трябва да има общ поглед върху фирмата.
Списъкът в клиентския портал
Щракване върху плочката отваря /my/open-items. Страницата показва името на фирмата, избора на отчетна дата и таблицата с откритите позиции:

| Колона | Съдържание |
|---|---|
| Документ | Номер на документа на фактурата или кредитното известие, с връзка към изгледа на фактурата в портала; отдолу референцията, ако има такава |
| Дата | Дата на фактурата, съответно на осчетоводяването |
| Падеж | Дата на падежа; при просрочени позиции отдолу „n дни просрочие“ в червено |
| Сума | Първоначална сума на позицията |
| Открито | Все още откритата сума (след частични плащания) |
Под таблицата са салдото, т.е. сборът на всички открити суми, и сумата на просрочените позиции. Просрочените редове са оцветени, за да се забелязват веднага при бърз преглед. Кредитните известия и плащанията, които още не са разпределени към фактура, се показват с отрицателен знак и намаляват салдото; бележка под таблицата обяснява това на клиента. Ако Вашата фирма работи в няколко валути, салдото се посочва по валути.
Открити позиции към отчетна дата
Над таблицата стои „Открити позиции към отчетна дата“, до него поле за дата и бутонът Показване. При отчетна дата в миналото списъкът показва какво още не е било платено в този ден. Това е точно анализът, който е нужен за приключвания, проверки и съгласуване: „Какви задължения имахме към този доставчик към 31.12.?“

Как се изчислява отчетната дата
За всяка позиция важи: Открито към отчетната дата = сума на фактурата минус всички плащания, които са били съгласувани до и включително отчетната дата. Една позиция попада в списъка, ако в отчетната дата вече е била осчетоводена и там все още е имала остатък. Фактура от 7 септември на стойност 1.250,50 €, частично платена на 20 октомври с 500,00 € и погасена с остатъка на 5 ноември, фигурира при отчетна дата 2 ноември в списъка със 750,50 €, а при отчетна дата 5 ноември вече изобщо не фигурира.

Просрочието също се преценява към отчетната дата: Една позиция е просрочена, ако датата на падежа ѝ е преди отчетната дата и остатъкът е положителен. Дните след падежа се броят до отчетната дата, а не до днес. Отчетна дата в бъдещето се третира като днес, както и празна или невалидна дата в адресния ред. Така списъкът не може да симулира прогноза.
Какво означава тук „дата на плащането“
Меродавна е датата, на която фактурата и плащането са били съгласувани помежду си в Odoo (по-голямата от двете дати на осчетоводяване), а не датата на фактурата. Това е обичайният случай: Плащането се осчетоводява в деня на постъпването му и се разпределя към фактурата. Който разпределя плащанията чак след дни, вижда фактурата като открита съответно по-дълго. Разделът ограниченията разглежда това по-подробно.
PDF експорт
Чрез Изтегляне на PDF модулът генерира списъка като PDF файл за избраната отчетна дата. Бутонът Печат отваря същия списък в диалога за печат на браузъра. PDF използва оформлението на документите на Вашата фирма в Odoo (лого, адрес, долен колонтитул от настройките) и европейския формат на хартията:

- Заглавие с отчетна дата: „Открити позиции към отчетна дата 02.11.2026“, дори когато отчетната дата е днес. Ако няма открити позиции, там пише „Няма открити позиции.“
- Адрес на клиента в адресното поле на фирменото оформление, за да е списъкът уместен и когато е разпечатан.
- Просрочените позиции са в получер шрифт, за да се открояват и при черно-бял печат.
- Салдо и сума на просрочените позиции в края на таблицата, при няколко валути по валути.
- Име на файла с фирма и дата, например
Open_items_Muster_Handels_GmbH_2026-11-02.pdf.
Платежна дисциплина: оценка с един поглед
От версия 19.0.1.1.0 над таблицата има кратък анализ на това колко навреме фирмата плаща фактурите си. Същият анализ се появява и в PDF. Така клиентът сам вижда къде се намира, а Вие не е нужно да му го обяснявате отделно.

- Зелено: „47 % са платени в рамките на срока за плащане.“ Имат се предвид фактури, платени на падежа или по-рано.
- Оранжево: „29 % са платени през седмицата след изтичане на срока за плащане.“ Това са плащания от един до седем дни след падежа.
- Червено: „24 % са платени по-късно, средно след 39 дни (25 дни след изтичане на срока за плащане).“ Първото число се брои от датата на фактурата, числото в скобите от падежа. Редът се появява само ако има такива фактури.
- „Фактурите са открити до 60 дни.“ Това е възрастта на най-старата фактура, която към отчетната дата още е открита, считано от датата на фактурата.
Отдолу е оценката на платежната дисциплина: добра или лоша, а в края на страницата, в PDF в края на страницата, е бележката „Клиенти с лоша платежна дисциплина се прехвърлят на предплащане.“ PDF показва същите редове в оформление с бланка:

Какво се брои
- Оценяват се фактурите към клиента, които са осчетоводени. Кредитните известия и чернови не се броят. При плащане на вноски всяка вноска се брои поотделно.
- Период: фактурите от последните дванадесет месеца и всички фактури, които още са открити, дори да са по-стари.
- Денят на плащане е датата на последното съгласуване с плащане, както при отчетната дата.
- Открити фактури: Ако една фактура е просрочена към отчетната дата, тя се брои така, сякаш е платена на отчетната дата, т.е. оранжева или червена. Открита фактура, която още не е с настъпил падеж, не се оценява.
- При отчетна дата в миналото важи състоянието към този ден: плащанията след отчетната дата още не се броят.
- Ако няма какво да се оценява, там пише „Няма фактури от последните 12 месеца за оценяване.“ и няма оценка.
Кога платежната дисциплина е „добра“?
Оценката е добра, ако поне 70 % от фактурите са зелени или оранжеви (навреме или най-много със седмица закъснение) и няма открита фактура, просрочена повече от 30 дни. Иначе е лоша. Праговете (7 дни, 70 %, 30 дни, 12 месеца) са константи в началото на models/res_partner.py и могат да се променят там.
Важно: модулът не прехвърля никого на предплащане. Бележката в долния колонтитул е фиксиран текст, който показва на клиентите с лоша оценка какво може да последва. Дали и кога ще вземете такова решение, остава Ваша работа. Ако изречението не Ви устройва, променете го в двата шаблона (страницата на портала и отчета) или в превода.
Кой какво може да вижда? Моделът на достъп
Откритите позиции са чувствителни данни, затова достъпът ни беше по-важен от всяка допълнителна функция. Моделът е умишлено прост:

- Само със зададена опция. Без отметка при контакта няма плочка, а извикването на
/my/open-itemsпренасочва към Моят профил. - Винаги собствената фирма. Фирмата се определя от влезлия потребител, а не от параметър в адреса. Няма възможност чрез адресния ред да се поиска чужда фирма.
- Същата проверка при PDF. Odoo по принцип предоставя PDF отчетите и през общ адрес. Затова модулът проверява още веднъж в самия отчет: Само потребители с право за счетоводство или потребители на портала със зададена опция за собствената си фирма получават PDF, всички останали получават грешка за достъп.
- Само осчетоводени позиции. Чернови и анулирани документи никога не се показват.
- Само собствени счетоводни кръгове: Отчитат се само записите на фирми, до които потребителят има достъп.
Техническа реализация
Модулът зависи само от account и portal, т.е. от компоненти на Odoo Community. Добавя към контакта едно-единствено поле, а иначе се състои от контролер, клас на отчета и шаблони.
| Компонент | Задача |
|---|---|
Поле portal_open_items в res.partner | Булева опция „Показване на списъка с открити позиции в портала“, не се копира, по подразбиране изключена. |
_open_items_data() | Търси осчетоводените, все още несъгласувани редове на вземания на фирмата и изчислява за всеки ред остатък, просрочие и дни. Връща редове, суми по валути и отчетната дата. |
_payment_morale() | Оценява фактурите от последните дванадесет месеца и всички открити фактури към отчетната дата: дялове на платените навреме, със закъснение до седем дни и по-късно, средна продължителност, най-дълго открита фактура и оценката добра или лоша. |
_open_items_residual() | Остатък на ред към отчетната дата: сума минус всички частични съгласувания с дата до отчетната дата, във валутата на фактурата. |
Контролер /my/open-items | Показва страницата, оценява отчетната дата (празна, невалидна или в бъдещето = днес) и без опция пренасочва към Моят профил. |
Контролер /my/open-items/pdf | Генерира PDF със същата отчетна дата и го предоставя с име на файл. |
Отчет report_open_items | QWeb шаблон във фирменото оформление (web.external_layout) със собствена проверка на разрешението. |
| Шаблони за портала | Плочка в Моят профил, навигационна пътека, страница с формуляр за дата и таблица. |
| Формуляр за контакт | Опция в раздел Уебсайт, видима само за групата account.group_account_invoice. |
| Превод | Немски (de.po) и шаблон (.pot) са включени. |
Откритите позиции се четат от счетоводните редове, а не от фактурите. Това е важно: Само така се появяват и кредитните известия и още неразпределените плащания и само така състоянието към по-ранен ден може да се възстанови от съгласуванията (account.partial.reconcile). Заявката се изпълнява за цялата фирма (commercial_partner_id) с повишени права, а проверката дали потребителят има право да ги вижда е преди нея.
Тестове
Модулът идва с тринадесет автоматични теста, които при нас минават успешно:
- достъп само със зададена опция, иначе пренасочване към Моят профил,
- списъкът съдържа позициите на цялата фирма, но никога на друга фирма,
- опцията важи за контакт, а не за всички потребители на фирмата,
- кредитните известия са в списъка с отрицателна сума и намаляват салдото,
- отчетна дата: по-късно платена фактура е в списъка преди това, след това не е,
- страница с бъдеща и с невалидна дата,
- PDF адресът връща PDF файл,
- отчет като HTML и проверка на достъпа в отчета,
- открита сума към отчетната дата след частични плащания преди и след отчетната дата,
- платежна дисциплина: разпределение на платени навреме, със закъснение до седмица и по-късно, със средните стойности, също и за отчетна дата в миналото,
- платежна дисциплина с открити фактури и оценката добра или лоша,
- платежна дисциплина без фактури и никога с данни на друга фирма,
- платежна дисциплина в страницата на портала и в PDF.
Освен това преминахме през страницата в браузъра в тестова база данни с примерни клиенти, илюстрациите в тази статия са оттам. Всички имена, номера на документи и суми в тях са измислени.
Инсталиране и настройка
git clone https://github.com/Alex0176/odoo-portal-open-items.git
ln -s /pfad/odoo-portal-open-items/portal_open_items /pfad/addons/
odoo-bin -c odoo.conf -d <datenbank> -i portal_open_items --stop-after-init
Зависимостите са account и portal. След инсталирането услугата на Odoo трябва да се рестартира, защото модулът съдържа Python код. Който експлоатира производствена система, инсталира модула първо върху копие на базата данни. След това:
- отворете контакта, който трябва да вижда списъка (лице с достъп до портала),
- във формуляра задайте отметката Показване на списъка с открити позиции в портала и запишете,
- влезте в портала като този потребител или проверете заедно с клиента: плочка, списък, отчетна дата и PDF.
Преди разрешаването проверете настройките на изпращача и оформлението на Вашата фирма, защото PDF взема логото, адреса и долния колонтитул от оформлението на документите. Модулът сам не изпраща имейли и не създава известия.
Ограничения и бележки
- Текущо състояние за осчетоводени документи. Отчетната дата се изчислява въз основа на записите така, както са в системата в момента. Ако след отчетната дата фактура е била анулирана или върната в чернова, списъкът не я показва. Това не е неизменна моментна снимка „както е била отпечатана тогава“.
- Плащанията се броят от деня на съгласуване. Ако едно плащане бъде разпределено чак дни след постъпването му, фактурата дотогава стои в списъка като открита. Който иска коректни анализи към отчетна дата, трябва да разпределя плащанията своевременно. Банково съгласуване към фактури не е включено в Odoo Community; за това използваме нашия модул Bank-Statement-Matcher.
- Платежната дисциплина е толкова добра, колкото е Вашето съгласуване. Брои се кога едно плащане е било разпределено към фактура. Плащания, които дълго не са били съгласувани, карат клиента да изглежда по-зле, отколкото е. Проверете оценката при Вашите клиенти, преди да правите изводи от нея.
- Оценката е видима за клиента. Който има опцията, вижда и резултата, и бележката за предплащането. Модулът не променя при това нищо в условията за плащане.
- Само вземания. Модулът показва какво клиентът дължи на Вас, а не Вашите задължения към клиента.
- Без нива на напомняне и без връзка за плащане в списъка. Клиентът може да отвори фактура от списъка и да я плати там, доколкото Вашият портал иначе позволява.
- PDF и многопроцесен режим. За генериране на PDF отчети Odoo извиква вътрешно собствения си уеб адрес. Ако Вашата система работи само с един работен процес, това може да блокира. Това важи за всички PDF отчети в портала, не само за този модул. Проверете бутона за PDF след инсталирането веднъж при реални условия.
- Тестван само с Odoo 19.0 Community. За други версии не сме го проверявали.
- Не замества напомнянето и извлечението от сметка. Списъкът не замества нито счетоводно извлечение от сметка, нито Вашите процеси за напомняне, а само прави състоянието прозрачно.
Често задавани въпроси
Какво е списък с открити позиции (ОП списък)?
Опис на всички фактури, които още не са платени или не са платени изцяло, с дата на фактурата, падеж и открита сума. Нарича се още „открити фактури“, „сметка на клиента“ или „оборотна ведомост“, като оборотната ведомост в тесен смисъл означава салдата на всички сметки.
Защо порталът на Odoo не показва ОП списък по подразбиране?
Порталът показва поръчките, фактурите и плащанията поотделно, със статус и филтри. Общ списък на фирмата със салдо и анализ към отчетна дата не влизат в обхвата на Community, доколкото сме видели. За това е предназначен модулът.
Виждат ли всички потребители на портала от една фирма списъка?
Не. Само контактите със зададена опция. Показаният списък обаче обхваща цялата фирма, а не само фактурите на този един контакт.
Мога ли да избера отчетна дата от миналото, например 31.12. на предходната година?
Да, произволна дата до днес. Списъкът показва тогава позициите, които в този ден са били осчетоводени и още неплатени. Обърнете внимание на бележките за изчислението: Меродавен е денят на съгласуване на плащането.
Поддържа ли се отчетна дата в бъдещето?
Не. Бъдещите дати се третират като днес, за да не показва списъкът състояние, което още не съществува.
Появяват ли се кредитните известия и авансовите плащания в списъка?
Да. Кредитните известия и плащанията, които още не са разпределени към фактура, се показват в списъка с отрицателна сума и намаляват салдото. Бележка под таблицата обяснява това на клиента.
Как се разпознават просрочените позиции?
Една позиция е просрочена, ако датата на падежа ѝ е преди отчетната дата и още има открит положителен остатък. Дните след падежа се броят до отчетната дата.
Има ли PDF и на други езици?
Да, интерфейсът и PDF следват езика на потребителя. Включен е немският превод; за други езици е достатъчен .po файл или превод през интерфейса на Odoo.
Може ли клиент да види списъка на друга фирма, ако промени адреса?
Не. Фирмата винаги се определя от влезлия потребител. Адресът съдържа само отчетната дата. Дори адресът на PDF отчета на Odoo се проверява още веднъж в самия отчет.
Как се изчислява платежната дисциплина?
От осчетоводените фактури към клиенти от последните дванадесет месеца и всички открити фактури. За всяка фактура се брои колко дни след падежа е платена: най-късно в деня на падежа (зелено), до седем дни след него (оранжево) или по-късно (червено). Оценката е добра при поне 70 % зелени или оранжеви и без фактура, която е просрочена повече от 30 дни и е още открита. Подробностите са в раздела платежната дисциплина.
Прехвърля ли модулът клиентите с лоша платежна дисциплина на предплащане?
Не. Той показва само оценката и бележката. Условията за плащане, предплащането и блокиранията остават Ваше решение и Ваш процес в Odoo.
Изпраща ли модулът имейли или напомнителни писма?
Не. Той само предоставя страница и PDF. Не създава съобщения, известия или дейности.
Работи ли модулът с Odoo Enterprise?
Зависи само от account и portal, които съществуват и в двете издания. Тествали сме го само върху Community изданието на Odoo 19.
Под какъв лиценз е модулът?
Под AGPL-3. Можете да го използвате, променяте и разпространявате, ако спазвате лицензионните условия. Грешки и предложения за подобрение са добре дошли като проблем (issue) в хранилището в GitHub .
Поддръжка от Biricon IT Services
Поддържаме инсталации на Odoo за малки и средни предприятия: от внедряването през персонализации и миграции до текущата експлоатация. Ако искате да предоставяте на клиентите си в портала открити позиции, фактури и тикети, да надградите счетоводството в Odoo Community или да внедрите безопасно модул във Вашата производствена инстанция, ще ви помогнем с удоволствие. Други собствени разработки: Архивиране на фирма заедно с потребителите на портала, Търговски регистър и проверка на адреси за австрийски клиенти, Номера на документи от префикс, година и брояч и Набори от продукти в офертата като раздел.
Към: 6 ноември 2026 г. Версия на модула 19.0.1.1.1. Промени спрямо първата версия от 5 ноември: платежна дисциплина (19.0.1.1.0) и корекция на откритата сума към отчетната дата след частични плащания (19.0.1.1.1). Всички имена, номера на документи и суми в илюстрациите са измислени.