Категория: Import/Export, Integration, Open Standards
Проблемът с Комерсиалните Софтуери в България
Манипулацията, Която Всички Знаят (Но Никой Не Говори)
Ако сте се опитвали да интегрирате складова програма с Microinvest, Бизнес Навигатор, или друг български счетоводен софтуер, вероятно сте преживели следното:
Вие: "Искам да импортирам данни от нашата складова система."
Support: "Разбира се! Просто ни изпратете файла в нашия формат."
Вие: "Какъв е форматът? Имате ли документация?"
Support: "Да, имаме. Но за интеграция ще ви трябва консултация."
Вие: "Консултация?"
Support: "Да, 150 лв/час. Или пакет от 1500 лв за пълна интеграция."
Вие: "Но аз само искам да разбера форматаto..."
Support: "За това са нужни специални познания. Ще ви свържем с консултант."
Резултат:
- 💸 1,500-3,000 лв за „консултации“
- ⏱️ 2-4 седмици чакане
- 📄 Проприетарен формат, който не можете да използвате другаде
- 🔒 Vendor lock-in – завързани сте за този софтуер завинаги
Истината за „Специалните Формати“
Какво Всъщност Правят Комерсиалните Софтуери?
Нека разкрием завесата. Ето какво е типичният „специален“ импорт формат:
Пример от реален български счетоводен софтуер:
DOC|2024-10-21|INV-001|1500.00|300.00|1800.00|BG123456789
LINE|601|DEBIT|1500.00|Разходи за материали
LINE|4531|DEBIT|300.00|ДДС
LINE|401|CREDIT|1800.00|Доставчици
Това е! Обикновен CSV с pipe delimiter. Нищо специално. Нищо сложно.
Но софтуерните къщи:
- НЕ документират формата публично
- Променят формата между версии (без обратна съвместимост)
- Крият зад „необходимост от консултация“
- Взимат хиляди левове за „специализирана интеграция“
Защо Не Използват XML/JSON/Стандарти?
Отговорът е прост: ПАРИ.
Ако използваха стандартни формати:
- ❌ Клиентите биха могли да мигрират към друг софтуер
- ❌ Конкуренцията би била по-лесна
- ❌ Нямаше да има приходи от „консултации“
- ❌ Интеграциите биха били безплатни
Затова:
- ✅ Измислят „специални“ формати
- ✅ Пазят документацията в тайна
- ✅ Продават „експертиза“ за интеграция
- ✅ Правят vendor lock-in стратегия

rs-ac-bg: Революцията на Отворените Стандарти
Нашата Философия
// rs-ac-bg подход към импорт/експорт
pub struct ImportExportPhilosophy {
open_standards: true, // XML, JSON, CSV
full_documentation: true, // Пълна публична документация
no_consultations: true, // Нулеви такси за интеграция
backward_compatible: true, // Винаги съвместимо
}
Няма скрити формати. Няма скъпи консултации. Само отворени стандарти.
📥 Импорт Възможности
1. Универсален JSON Import/Export
Пълна документация. Безплатна. Публична.
Експорт на всичко в JSON
mutation {
exportUniversalJson(input: {
companyId: 1
includeDocuments: true
includeJournalEntries: true
})
}
Резултат:
{
"version": "2.0",
"company": {
"id": 1,
"name": "Примерна ЕООД",
"taxNumber": "BG123456789"
},
"chartOfAccounts": [
{
"code": "102",
"name": "Каса в BGN",
"type": "ASSETS",
"isAnalytical": true,
"parent": "10"
},
{
"code": "201",
"name": "Разплащателна сметка",
"type": "ASSETS",
"isAnalytical": true,
"parent": "20"
}
],
"vatRates": [
{
"rate": 20.0,
"code": "STD",
"isActive": true
},
{
"rate": 9.0,
"code": "RED",
"isActive": true
}
],
"counterparts": [
{
"name": "Доставчик ООД",
"taxNumber": "123456789",
"vatNumber": "BG123456789",
"address": "София, ул. Витоша 1",
"isSupplier": true,
"isCustomer": false
}
],
"journalEntries": [
{
"entryNumber": "JE-2024-001",
"documentDate": "2024-10-21",
"documentNumber": "INV-001",
"description": "Покупка на материали",
"lines": [
{
"account": "601",
"debit": 1500.00,
"credit": 0.00,
"description": "Разходи за материали"
},
{
"account": "4531",
"debit": 300.00,
"credit": 0.00,
"description": "ДДС за възстановяване"
},
{
"account": "401",
"debit": 0.00,
"credit": 1800.00,
"description": "Доставчици",
"counterpart": "Доставчик ООД"
}
],
"vatData": {
"vatRegister": "PURCHASE",
"vatOperationCode": "пок10",
"taxBase": 1500.00,
"vatRate": 20.0,
"vatAmount": 300.00
}
}
]
}
Това е ВСЕ! Никакви тайни. Никакви консултации. JSON е JSON.
Импорт обратно
mutation {
importUniversalJson(input: {
companyId: 1
jsonData: "{ ... }" # Същият JSON формат
}) {
success
accountsImported
vatRatesImported
counterpartsImported
journalEntriesImported
errors
warnings
}
}
Резултат:
{
"success": true,
"accountsImported": 120,
"vatRatesImported": 3,
"counterpartsImported": 45,
"journalEntriesImported": 234,
"errors": [],
"warnings": [
"Account 999 not found, created automatically"
]
}
2. XML Import (Controlisy & Стандартен)
Controlisy XML – Пълна Поддръжка
Безплатна интеграция с Controlisy платформата!
<?xml version="1.0" encoding="utf-8"?>
<ExportedData>
<Contractors>
<Contractor
contractorName="Примерна фирма ООД"
contractorEIK="123456789"
contractorVATNumber="BG123456789"
contractorAddress="София, ул. Витоша 1"
/>
</Contractors>
<Documents>
<Document
accountingMonth="2024-10-01"
vatMonth="2024-10-01"
documentDate="2024-10-21"
documentNumber="INV-2024-001"
reason="Продажба на стоки"
netAmountBGN="1000.00"
vatAmountBGN="200.00"
totalAmountBGN="1200.00"
>
<Accountings>
<Accounting amountBGN="1200.00">
<AccountingDetail
direction="Debit"
accountNumber="411"
accountName="Клиенти"
contractorName="Примерна фирма ООД"
/>
<AccountingDetail
direction="Credit"
accountNumber="701"
accountName="Приходи от продажби"
/>
<AccountingDetail
direction="Credit"
accountNumber="4532"
accountName="ДДС за внасяне"
/>
</Accounting>
</Accountings>
<VATData vatRegister="2">
<VAT
taxBase="1000.00"
vatRate="20"
vatAmountBGN="200.00"
vatOperationIden="1"
/>
</VATData>
</Document>
</Documents>
</ExportedData>
Автоматично разпознаване:
- ✅ Тип документ (покупка/продажба) – чрез
vatRegister - ✅ ДДС операции – автоматично мапиране
- ✅ Контрагенти – създаване или актуализация
- ✅ Счетоводни записи – балансирани и валидни
GraphQL импорт:
mutation {
importControlisyXml(input: {
companyId: 1
xmlContent: "<?xml version...>"
}) {
success
documentsImported
journalEntriesCreated
counterpartsCreated
errors
}
}
3. Банкови Извлечения (MT940, CSV, XML)
Поддържани Банкови Формати
Без консултации. Без допълнителни такси.
MT940 (SWIFT Стандарт)
:20:STATEMENT-001
:25:BG80BNBG96611020345678
:28C:00001/001
:60F:C241021BGN50000,00
:61:2410211021D10000,00NTRFNONREF//PAYMENT-001
:86:Плащане на доставчик
Фактура INV-2024-123
ООД "Метал България"
:62F:C241021BGN40000,00
Автоматично парсване:
- ✅ Номер на сметка (
:25:) - ✅ Начално салдо (
:60F:) - ✅ Транзакции (
:61:) - ✅ Описания (
:86:) - ✅ Крайно салдо (
:62F:)
CSV Формат (UniCredit, DSK, Fibank, УББ)
Date,Reference,Description,Debit,Credit,Balance
2024-10-21,PMT-001,"Плащане фактура INV-123",10000.00,,40000.00
2024-10-22,INC-001,"Постъпление от клиент",,15000.00,55000.00
Автоматично разпознаване на:
- ✅ Входящи плащания
- ✅ Изходящи плащания
- ✅ Банкови такси
- ✅ Валутни операции
XML Банкови Формати
<BankStatement>
<Account>BG80BNBG96611020345678</Account>
<Currency>BGN</Currency>
<OpeningBalance>50000.00</OpeningBalance>
<Transactions>
<Transaction>
<Date>2024-10-21</Date>
<Amount>-10000.00</Amount>
<Description>Плащане на доставчик</Description>
<Reference>PMT-001</Reference>
<Counterparty>
<Name>Метал България ООД</Name>
<IBAN>BG12UNCR70001234567890</IBAN>
</Counterparty>
</Transaction>
</Transactions>
<ClosingBalance>40000.00</ClosingBalance>
</BankStatement>
AI Parsing на Описания:
rs-ac-bg използва AI за автоматично разпознаване на контрагенти и документи от банкови описания:
Input: "ПЛАЩАНЕ ФАКТУРА 2024-123 ОТ ACME CORP"
AI извлича:
├── Тип: Входящо плащане
├── Документ: "Фактура 2024-123"
├── Контрагент: "ACME CORP"
└── Предлага запис:
Дт 201 (Банкова сметка)
Кт 411 (Клиенти / ACME CORP)
4. Excel/CSV Импорт с Гъвкаво Мапиране
За складови програми, CRM системи, всичко!
Custom Mapping Interface
// Frontend - UniversalImport.jsx
const mappingPresets = {
"Складова програма A": {
dateColumn: "Дата",
documentColumn: "Док. №",
accountColumn: "Сметка",
debitColumn: "Дебит",
creditColumn: "Кредит"
},
"CRM система B": {
dateColumn: "Date",
accountColumn: "Account Code",
amountColumn: "Amount",
typeColumn: "Type" // "Debit" или "Credit"
},
"Custom": {
// Ръчно мапиране
}
}
Пример Excel файл от складова програма:
| Дата | Документ | Операция | Сметка | Сума | Тип |
|------------|-----------|------------------|--------|---------|--------|
| 21.10.2024 | DOC-001 | Покупка материал | 601 | 1500.00 | Дебит |
| 21.10.2024 | DOC-001 | ДДС | 4531 | 300.00 | Дебит |
| 21.10.2024 | DOC-001 | Доставчик | 401 | 1800.00 | Кредит |
GraphQL импорт с мапиране:
mutation {
importExcelWithMapping(input: {
companyId: 1
excelContent: "base64_encoded_excel"
mapping: {
dateColumn: "Дата"
documentColumn: "Документ"
accountColumn: "Сметка"
amountColumn: "Сума"
typeColumn: "Тип"
}
}) {
success
rowsImported
errors
}
}
Резултат: Импортът работи БЕЗ консултации, БЕЗ програмист, БЕЗ такси!
📤 Експорт Възможности
1. ДДС Файлове за НАП (Windows-1251, Fixed-Width)
Пълна съвместимост с НАП изисквания!
mutation {
exportVatNap(input: {
companyId: 1
period: "2024-10"
}) {
deklarTxt # DEKLAR.TXT
prodagbiTxt # PRODAGBI.TXT
pokupkiTxt # POKUPKI.TXT
}
}
DEKLAR.TXT:
01BG123456789 2024100000012345600000098760...
PRODAGBI.TXT:
022024-10-05INV-001 BG987654321Клиент ООД 0000100000000020000000120000...
022024-10-12INV-002 BG555666777Друг клиент 0000150000000030000000180000...
POKUPKI.TXT:
032024-10-03SUP-123 BG111222333Доставчик ЕООД 0000050000000010000000060000...
Формат: Windows-1251 кодировка, fixed-width според НАП спецификация PPDDS_2025
2. SAF-T v1.0.1 Експорт
Готовност за НАП изискванията от 2026!
mutation {
exportSaft(input: {
companyId: 1
periodStart: 1
periodStartYear: 2024
periodEnd: 12
periodEndYear: 2024
fileType: "Annual" # Annual, Monthly, OnDemand
taxAccountingBasis: "A" # A=Търговско, B=Бюджетно, C=Банково
}) {
fileName
fileContent # Base64
fileSize
}
}
SAF-T XML структура:
<?xml version="1.0" encoding="UTF-8"?>
<AuditFile xmlns="mf:nra:dgti:dxxxx:declaration:v1">
<Header>
<AuditFileVersion>1.0.1</AuditFileVersion>
<AuditFileCountry>BG</AuditFileCountry>
<CompanyID>BG123456789</CompanyID>
<TaxRegistrationNumber>123456789</TaxRegistrationNumber>
<TaxAccountingBasis>A</TaxAccountingBasis>
<CompanyName>Примерна ЕООД</CompanyName>
<FiscalYear>2024</FiscalYear>
</Header>
<MasterFiles>
<GeneralLedgerAccounts>
<Account>
<AccountID>102</AccountID>
<AccountDescription>Каса в BGN</AccountDescription>
<AccountType>GL</AccountType>
<OpeningDebitBalance>5000.00</OpeningDebitBalance>
</Account>
</GeneralLedgerAccounts>
<Customers>
<Customer>
<CustomerID>1</CustomerID>
<CustomerTaxID>BG987654321</CustomerTaxID>
<CompanyName>Клиент ООД</CompanyName>
<BillingAddress>
<City>София</City>
<Country>BG</Country>
</BillingAddress>
</Customer>
</Customers>
</MasterFiles>
<GeneralLedgerEntries>
<Journal>
<Transaction>
<TransactionID>JE-2024-001</TransactionID>
<TransactionDate>2024-10-21</TransactionDate>
<Description>Продажба на стоки</Description>
<Line>
<AccountID>411</AccountID>
<DebitAmount>1200.00</DebitAmount>
<CustomerID>1</CustomerID>
</Line>
<Line>
<AccountID>701</AccountID>
<CreditAmount>1000.00</CreditAmount>
</Line>
<Line>
<AccountID>4532</AccountID>
<CreditAmount>200.00</CreditAmount>
</Line>
</Transaction>
</Journal>
</GeneralLedgerEntries>
<SourceDocuments>
<SalesInvoices>
<Invoice>
<InvoiceNo>INV-2024-001</InvoiceNo>
<InvoiceDate>2024-10-21</InvoiceDate>
<CustomerID>1</CustomerID>
<Line>
<LineNumber>1</LineNumber>
<ProductDescription>Лаптоп Dell XPS 15</ProductDescription>
<Quantity>2.00</Quantity>
<UnitOfMeasure>бр</UnitOfMeasure>
<UnitPrice>500.00</UnitPrice>
<TaxBase>1000.00</TaxBase>
<Tax>
<TaxType>VAT</TaxType>
<TaxPercentage>20.00</TaxPercentage>
<TaxAmount>200.00</TaxAmount>
</Tax>
</Line>
<DocumentTotals>
<TaxPayable>200.00</TaxPayable>
<NetTotal>1000.00</NetTotal>
<GrossTotal>1200.00</GrossTotal>
</DocumentTotals>
</Invoice>
</SalesInvoices>
</SourceDocuments>
</AuditFile>
Ред по ред количествено отчитане! Пълна съвместимост с НАП SAF-T v1.0.1.
3. INTRASTAT XML Експорт
Автоматични декларации за вътреобщностна търговия!
mutation {
exportIntrastat(input: {
companyId: 1
period: "2024-10"
flowType: "DISPATCH" # DISPATCH или ARRIVAL
}) {
xmlContent
fileName
transactionCount
}
}
INTRASTAT XML:
<?xml version="1.0" encoding="UTF-8"?>
<INTRASTAT_Declaration xmlns="...">
<Header>
<DeclarationId>INTRA-2024-10</DeclarationId>
<ReportingPeriod>2024-10</ReportingPeriod>
<FlowType>Dispatch</FlowType>
<ReportingCountry>BG</ReportingCountry>
<PSIId>BG123456789</PSIId>
</Header>
<Body>
<Item>
<ItemNumber>1</ItemNumber>
<CN8Code>85171231</CN8Code>
<CountryOfDestination>DE</CountryOfDestination>
<NatureOfTransaction>11</NatureOfTransaction>
<ModeOfTransport>3</ModeOfTransport>
<InvoicedAmount>5000.00</InvoicedAmount>
<NetMass>150</NetMass>
<SupplementaryUnits>10</SupplementaryUnits>
</Item>
</Body>
</INTRASTAT_Declaration>
4. Универсален Експорт в Excel
За анализ, архивиране, миграция!
mutation {
exportToExcel(input: {
companyId: 1
exportType: "JOURNAL_ENTRIES" # или BALANCE_SHEET, TRIAL_BALANCE, и т.н.
periodStart: "2024-01-01"
periodEnd: "2024-12-31"
}) {
excelContent # Base64
fileName
}
}
Excel структура:
Sheet 1: Дневник
─────────────────────────────────────────────────────────────
| Дата | Док. № | Описание | Сметка | Дт | Кт |
|------------|--------|-------------|--------|---------|---------|
| 21.10.2024 | JE-001 | Покупка | 601 | 1500.00 | |
| 21.10.2024 | JE-001 | ДДС | 4531 | 300.00 | |
| 21.10.2024 | JE-001 | Доставчик | 401 | | 1800.00 |
Sheet 2: Контрагенти
─────────────────────────────────────────────────────────────
| Име | ЕИК | ДДС № | Адрес |
|-----------------|-----------|-------------|----------------|
| Доставчик ООД | 123456789 | BG123456789 | София, ул. ... |
Sheet 3: Сметкоплан
─────────────────────────────────────────────────────────────
| Код | Име | Тип | Родител |
|-----|------------------------|--------|---------|
| 102 | Каса в BGN | Актив | 10 |
| 201 | Разплащателна сметка | Актив | 20 |
🆚 Сравнение: rs-ac-bg vs Комерсиален Софтуер
| Функция | rs-ac-bg | Microinvest | Бизнес Навигатор | Други |
|---|---|---|---|---|
| JSON Import/Export | ✅ Пълна поддръжка | ❌ | ❌ | ❌ |
| XML Import (стандарт) | ✅ | ⚠️ Проприетарен | ⚠️ Проприетарен | ⚠️ |
| Excel Import с мапиране | ✅ Гъвкаво | ⚠️ Фиксиран формат | ⚠️ | ⚠️ |
| Банкови извлечения | ✅ MT940, CSV, XML | ⚠️ Ограничени | ⚠️ | ⚠️ |
| SAF-T v1.0.1 | ✅ Пълен | ❌ | ⚠️ Частичен | ⚠️ |
| INTRASTAT XML | ✅ | ✅ | ✅ | ⚠️ |
| ДДС за НАП | ✅ | ✅ | ✅ | ✅ |
| Документация | ✅ Публична, пълна | ❌ Платена | ❌ Платена | ❌ |
| Консултации за интеграция | €0 | €150-300/час | €200/час | €100-250/час |
| API достъп | ✅ GraphQL (безплатно) | ⚠️ Платен модул | ⚠️ Платен | ⚠️ |
| Backward compatibility | ✅ Гарантирана | ❌ | ❌ | ❌ |
| Vendor lock-in | ❌ Нулев | ✅ Висок | ✅ Висок | ✅ |
💸 Колко Струва Интеграцията?
Традиционен Софтуер
Пример: Интеграция на складова програма с Microinvest
Консултация за анализ: 300 лв
Разработка на експорт модул: 1200 лв
Тестове и debug: 500 лв
Обучение на персонал: 400 лв
Поддръжка (годишна): 600 лв/година
────────────────────────────────────
ОБЩО първа година: 3000 лв
Всяка следваща година: 600 лв
Ако смените софтуера след 3 години:
Нова интеграция: 3000 лв (отначало!)
────────────────────────────────────
ОБЩО за 3 години: 3000 + 600 + 600 + 3000 = 7200 лв
rs-ac-bg
Консултация: 0 лв (документацията е публична)
Разработка: 0 лв (използвате стандартен JSON)
Тестове: 0 лв (предоставяме примери)
Обучение: 0 лв (видео уроци безплатно)
Поддръжка: 0 лв (open source community)
────────────────────────────────────
ОБЩО: 0 лв
Ако смените софтуера:
Експортирате JSON → 2 минути
Импортирате в нов софтуер → 5 минути
────────────────────────────────────
ОБЩО: 7 минути, 0 лв
СПЕСТЯВАНИЯ: 7,200 лв за 3 години!
🔓 Реални Примери за Интеграция
Пример 1: Интеграция със Складова Програма
Сценарий: Имате собствена складова програма. Искате да изпращате данни към счетоводството.
Стъпка 1: Експорт от складовата програма
# Python скрипт във вашата складова програма
import json
import requests
# Вашите данни от склада
warehouse_invoice = {
"date": "2024-10-21",
"document_number": "WH-001",
"supplier": "Доставчик ООД",
"items": [
{"name": "Стока А", "quantity": 10, "price": 50, "vat_rate": 20},
{"name": "Стока Б", "quantity": 5, "price": 100, "vat_rate": 20}
]
}
# Конвертиране в rs-ac-bg формат
journal_entry = {
"entryNumber": f"WH-{warehouse_invoice['document_number']}",
"documentDate": warehouse_invoice['date'],
"documentNumber": warehouse_invoice['document_number'],
"description": f"Покупка от {warehouse_invoice['supplier']}",
"lines": []
}
# Изчисляване на суми
total_net = sum(item['quantity'] * item['price'] for item in warehouse_invoice['items'])
total_vat = total_net * 0.20
total_gross = total_net + total_vat
# Дебит: Стоки (сметка 302)
journal_entry['lines'].append({
"account": "302",
"debit": total_net,
"credit": 0,
"description": "Стоки"
})
# Дебит: ДДС (сметка 4531)
journal_entry['lines'].append({
"account": "4531",
"debit": total_vat,
"credit": 0,
"description": "ДДС за възстановяване"
})
# Кредит: Доставчици (сметка 401)
journal_entry['lines'].append({
"account": "401",
"debit": 0,
"credit": total_gross,
"description": warehouse_invoice['supplier'],
"counterpart": warehouse_invoice['supplier']
})
# Импорт в rs-ac-bg
graphql_query = """
mutation {
importUniversalJson(input: {
companyId: 1
jsonData: "%s"
}) {
success
journalEntriesImported
errors
}
}
""" % json.dumps({"journalEntries": [journal_entry]})
response = requests.post(
"https://your-rs-ac-bg.com/graphql",
json={"query": graphql_query},
headers={"Authorization": "Bearer YOUR_JWT_TOKEN"}
)
print(response.json())
Резултат: Интеграцията работи за 10 минути, 0 лв разходи!
Пример 2: Миграция от Друг Софтуер
Сценарий: Искате да мигрирате от Microinvest към rs-ac-bg.
Стъпка 1: Експорт от Microinvest
Microinvest → Експорт → Excel
(ако имате късмет и Microinvest позволява експорт)
Стъпка 2: Конвертиране в JSON
import pandas as pd
import json
# Четене на Excel от Microinvest
df = pd.read_excel("microinvest_export.xlsx")
# Конвертиране в rs-ac-bg JSON формат
journal_entries = []
for idx, row in df.iterrows():
entry = {
"entryNumber": row['Документ №'],
"documentDate": row['Дата'].strftime("%Y-%m-%d"),
"documentNumber": row['Документ №'],
"description": row['Описание'],
"lines": [
{
"account": row['Дебит сметка'],
"debit": row['Дебит сума'],
"credit": 0,
"description": row['Описание дебит']
},
{
"account": row['Кредит сметка'],
"debit": 0,
"credit": row['Кредит сума'],
"description": row['Описание кредит']
}
]
}
journal_entries.append(entry)
# Запис в JSON
with open("migration_data.json", "w", encoding="utf-8") as f:
json.dump({"journalEntries": journal_entries}, f, ensure_ascii=False, indent=2)
print(f"Експортирани {len(journal_entries)} записа")
Стъпка 3: Импорт в rs-ac-bg
mutation {
importUniversalJson(input: {
companyId: 1
jsonData: "{ ... }" # Съдържанието на migration_data.json
}) {
success
journalEntriesImported
errors
}
}
Резултат: Миграция на 5 години данни за 30 минути, 0 лв разходи!
Пример 3: Автоматична Синхронизация
Сценарий: Автоматично изпращане на данни от CRM към счетоводството всеки ден.
# cron job - ежедневно в 23:00
import requests
import json
from datetime import datetime, timedelta
# Данни от CRM (продажби за деня)
yesterday = datetime.now() - timedelta(days=1)
crm_sales = get_sales_from_crm(yesterday) # Ваша CRM функция
# Конвертиране в rs-ac-bg формат
entries = []
for sale in crm_sales:
entry = {
"entryNumber": f"CRM-{sale['id']}",
"documentDate": sale['date'],
"documentNumber": sale['invoice_number'],
"description": f"Продажба към {sale['customer']}",
"lines": [
{
"account": "411",
"debit": sale['total_with_vat'],
"credit": 0,
"description": "Клиенти",
"counterpart": sale['customer']
},
{
"account": "701",
"debit": 0,
"credit": sale['total_net'],
"description": "Приходи от продажби"
},
{
"account": "4532",
"debit": 0,
"credit": sale['vat_amount'],
"description": "ДДС за внасяне"
}
],
"vatData": {
"vatRegister": "SALE",
"vatOperationCode": "про11",
"taxBase": sale['total_net'],
"vatRate": 20.0,
"vatAmount": sale['vat_amount']
}
}
entries.append(entry)
# Импорт в rs-ac-bg
graphql_mutation = """
mutation($jsonData: String!) {
importUniversalJson(input: {
companyId: 1
jsonData: $jsonData
}) {
success
journalEntriesImported
errors
}
}
"""
response = requests.post(
"https://your-rs-ac-bg.com/graphql",
json={
"query": graphql_mutation,
"variables": {
"jsonData": json.dumps({"journalEntries": entries})
}
},
headers={"Authorization": "Bearer YOUR_JWT_TOKEN"}
)
result = response.json()
if result['data']['importUniversalJson']['success']:
print(f"✅ Импортирани {result['data']['importUniversalJson']['journalEntriesImported']} записа")
else:
print(f"❌ Грешки: {result['data']['importUniversalJson']['errors']}")
Резултат: Автоматична синхронизация, 0 лв месечни разходи!
📖 Пълна Документация (Безплатна!)
JSON Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "rs-ac-bg Universal Import/Export Format v2.0",
"type": "object",
"properties": {
"version": {
"type": "string",
"const": "2.0"
},
"company": {
"type": "object",
"properties": {
"id": {"type": "integer"},
"name": {"type": "string"},
"taxNumber": {"type": "string"}
},
"required": ["name", "taxNumber"]
},
"chartOfAccounts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"code": {"type": "string"},
"name": {"type": "string"},
"type": {
"type": "string",
"enum": ["ASSETS", "LIABILITIES", "EQUITY", "REVENUE", "EXPENSES"]
},
"isAnalytical": {"type": "boolean"},
"parent": {"type": "string"}
},
"required": ["code", "name", "type"]
}
},
"journalEntries": {
"type": "array",
"items": {
"type": "object",
"properties": {
"entryNumber": {"type": "string"},
"documentDate": {"type": "string", "format": "date"},
"documentNumber": {"type": "string"},
"description": {"type": "string"},
"lines": {
"type": "array",
"items": {
"type": "object",
"properties": {
"account": {"type": "string"},
"debit": {"type": "number"},
"credit": {"type": "number"},
"description": {"type": "string"},
"counterpart": {"type": "string"}
},
"required": ["account", "debit", "credit"]
}
}
},
"required": ["documentDate", "lines"]
}
}
}
}
GraphQL Schema (Excerpts)
type Mutation {
# Universal Import/Export
importUniversalJson(input: UniversalImportInput!): ImportSummary!
exportUniversalJson(input: UniversalExportInput!): String!
# Controlisy
importControlisyXml(input: ControlisyImportInput!): ControlisyImportResult!
# Bank Statements
importBankStatement(input: BankStatementInput!): BankImportResult!
# Excel/CSV
importExcelWithMapping(input: ExcelImportInput!): ImportSummary!
# Exports
exportVatNap(input: VatNapExportInput!): VatNapFiles!
exportSaft(input: SaftExportInput!): SaftFile!
exportIntrastat(input: IntrastatExportInput!): IntrastatFile!
exportToExcel(input: ExcelExportInput!): ExcelFile!
}
Всичко е документирано на: https://docs.rs-ac-bg.com/import-export
🎯 Заключение
Защо Създадохме rs-ac-bg?
Видяхме как комерсиалните софтуери в България:
- 🔒 Затварят клиентите с проприетарни формати
- 💸 Взимат пари за „консултации“ за тривиални неща
- ❌ Отказват да документират форматите
- 🚫 Игнорират съвременните стандарти (XML, JSON)
- ⛔ Правят vendor lock-in стратегия
Това трябваше да спре.
Нашата Мисия
Open Standards. Open Documentation. Zero Fees.
rs-ac-bg е:
- ✅ 100% open source – виждате кода
- ✅ Пълна документация – всичко е публично
- ✅ Съвременни стандарти – JSON, XML, GraphQL
- ✅ Нулеви такси – за интеграции, консултации, API
- ✅ Backward compatible – няма да чупим вашите интеграции
- ✅ Community driven – всеки може да допринесе
Икономическата Изгода
За 3 години:
- Традиционен софтуер: 7,200 лв за интеграции
- rs-ac-bg: 0 лв
СПЕСТЯВАНИЯ: 7,200 лв = цена на нов служител за 3 месеца!
Призив за Действие
За счетоводни фирми:
- Изтеглете rs-ac-bg (безплатно)
- Интегрирайте складовите програми на клиентите си (безплатно)
- Спестете хиляди левове от консултации
- Предложете по-ниски цени на клиентите
За разработчици на складови програми:
- Използвайте нашия JSON формат (документиран)
- Интеграцията отнема 30 минути (не 30 дни)
- Нулеви такси (не 3000 лв)
- Вашите клиенти ще ви обичат
За бизнеси:
- Искайте от счетоводителя си да използва rs-ac-bg
- Спестете 80% от времето за обработка
- Нулеви разходи за интеграции
- Пълна свобода да смените софтуер
🚀 Започнете Днес
Стъпка 1: Инсталация
git clone https://github.com/katehonz/rs-ac_contragent.git
cd rs-ac-bg
docker-compose up -d
Стъпка 2: Тествайте Импорт
# Създайте тестов JSON файл
cat > test_import.json <<EOF
{
"version": "2.0",
"journalEntries": [
{
"entryNumber": "TEST-001",
"documentDate": "2024-10-21",
"documentNumber": "DOC-001",
"description": "Тестова операция",
"lines": [
{"account": "102", "debit": 1000, "credit": 0, "description": "Каса"},
{"account": "411", "debit": 0, "credit": 1000, "description": "Клиент"}
]
}
]
}
EOF
# Импорт чрез GraphQL
curl -X POST https://your-rs-ac-bg.com/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"query": "mutation($data: String!) { importUniversalJson(input: {companyId: 1, jsonData: $data}) { success journalEntriesImported } }",
"variables": {"data": "'"$(cat test_import.json | jq -c .)"'"}
}'
Стъпка 3: Експорт
curl -X POST https://your-rs-ac-bg.com/graphql \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"query": "mutation { exportUniversalJson(input: {companyId: 1}) }"
}' | jq -r '.data.exportUniversalJson' > export.json
Готово! Никакви консултации. Никакви такси. Просто работи.
📞 Поддръжка
- 📧 Email: info@rustac.top
#OpenStandards #NoConsultationFees #FreeIntegration #JSON #XML #ImportExport #AccountingSoftware #Bulgaria #OpenSource #VendorFreedom #ModernStandards #GraphQL #Rust #NoLockIn
rs-ac-bg – Свободата на интеграциите. Без скрити формати. Без скъпи консултации. Само отворени стандарти.
Open Source. Безплатно. Документирано. Прозрачно.
Създадено с ❤️ за българския бизнес. Против vendor lock-in практиките.