Clean up temporary files and sync changes

This commit is contained in:
Ernad Husremovic 2025-08-30 15:24:13 +02:00
parent cb57668fb1
commit 38f09df094
184 changed files with 0 additions and 175727 deletions

View file

@ -1,48 +0,0 @@
# Payroll OCA bosnian hack
Custom Odoo addon: payroll
## Installation
```bash
pip install odoo-bringout-oca-hack-payroll
```
## Dependencies
This addon depends on:
- hr_contract
- hr_holidays
- mail
## Manifest Information
- **Name**: Payroll OCA bosnian hack
- **Version**: 16.0.11.0.0
- **Category**: Human Resources
- **License**: LGPL-3
- **Installable**: False
## Source
Custom addon from bringout-oca-hack vendor, addon `payroll`.
## License
This package maintains the original LGPL-3 license from the addon.
## Documentation
- Overview: doc/OVERVIEW.md
- Architecture: doc/ARCHITECTURE.md
- Models: doc/MODELS.md
- Controllers: doc/CONTROLLERS.md
- Wizards: doc/WIZARDS.md
- Reports: doc/REPORTS.md
- Security: doc/SECURITY.md
- Install: doc/INSTALL.md
- Usage: doc/USAGE.md
- Configuration: doc/CONFIGURATION.md
- Dependencies: doc/DEPENDENCIES.md
- Troubleshooting: doc/TROUBLESHOOTING.md
- FAQ: doc/FAQ.md

View file

@ -1,32 +0,0 @@
# Architecture
```mermaid
flowchart TD
U[Users] -->|HTTP| V[Views and QWeb Templates]
V --> C[Controllers]
V --> W[Wizards Transient Models]
C --> M[Models and ORM]
W --> M
M --> R[Reports]
DX[Data XML] --> M
S[Security ACLs and Groups] -. enforces .-> M
subgraph Payroll Module - payroll
direction LR
M:::layer
W:::layer
C:::layer
V:::layer
R:::layer
S:::layer
DX:::layer
end
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
```
Notes
- Views include tree/form/kanban templates and report templates.
- Controllers provide website/portal routes when present.
- Wizards are UI flows implemented with `models.TransientModel`.
- Data XML loads data/demo records; Security defines groups and access.

View file

@ -1,3 +0,0 @@
# Configuration
Refer to Odoo settings for payroll. Configure related models, access rights, and options as needed.

View file

@ -1,3 +0,0 @@
# Controllers
This module does not define custom HTTP controllers.

View file

@ -1,7 +0,0 @@
# Dependencies
This addon depends on:
- [hr_contract](../../odoo-bringout-oca-ocb-hr_contract)
- [hr_holidays](../../odoo-bringout-oca-ocb-hr_holidays)
- [mail](../../odoo-bringout-oca-ocb-mail)

View file

@ -1,4 +0,0 @@
# FAQ
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
- Q: How to enable? A: Start server with --addon payroll or install in UI.

View file

@ -1,7 +0,0 @@
# Install
```bash
pip install odoo-bringout-oca-hack-payroll"
# or
uv pip install odoo-bringout-oca-hack-payroll"
```

View file

@ -1,27 +0,0 @@
# Models
Detected core models and extensions in payroll.
```mermaid
classDiagram
class hr_contribution_register
class hr_payroll_structure
class hr_payslip
class hr_payslip_input
class hr_payslip_line
class hr_payslip_run
class hr_payslip_worked_days
class hr_rule_input
class hr_rule_parameter
class hr_rule_parameter_value
class hr_salary_rule
class hr_salary_rule_category
class hr_contract
class hr_employee
class hr_salary_rule
class res_config_settings
```
Notes
- Classes show model technical names; fields omitted for brevity.
- Items listed under _inherit are extensions of existing models.

View file

@ -1,6 +0,0 @@
# Overview
Packaged Odoo addon: payroll. Provides features documented in upstream Odoo 16 under this addon.
- Source: OCA/OCB 16.0, addon payroll
- License: LGPL-3

View file

@ -1,32 +0,0 @@
# Reports
Report definitions and templates in payroll.
```mermaid
classDiagram
class PayslipDetailsReport
AbstractModel <|-- PayslipDetailsReport
class ContributionRegisterReport
AbstractModel <|-- ContributionRegisterReport
```
## Available Reports
### PDF/Document Reports
- **Payslip Contribution Register Lines** (PDF/Print)
- **Payslip** (PDF/Print)
- **PaySlip Details** (PDF/Print)
## Report Files
- **__init__.py** (Python logic)
- **report_contribution_register.py** (Python logic)
- **report_payslip_details.py** (Python logic)
- **report.xml** (XML template/definition)
## Notes
- Named reports above are accessible through Odoo's reporting menu
- Python files define report logic and data processing
- XML files contain report templates, definitions, and formatting
- Reports are integrated with Odoo's printing and email systems

View file

@ -1,42 +0,0 @@
# Security
Access control and security definitions in payroll.
## Access Control Lists (ACLs)
Model access permissions defined in:
- **[ir.model.access.csv](../payroll/security/ir.model.access.csv)**
- 16 model access rules
## Record Rules
Row-level security rules defined in:
## Security Groups & Configuration
Security groups and permissions defined in:
- **[hr_payroll_security.xml](../payroll/security/hr_payroll_security.xml)**
- 2 security groups defined
```mermaid
graph TB
subgraph "Security Layers"
A[Users] --> B[Groups]
B --> C[Access Control Lists]
C --> D[Models]
B --> E[Record Rules]
E --> F[Individual Records]
end
```
Security files overview:
- **[hr_payroll_security.xml](../payroll/security/hr_payroll_security.xml)**
- Security groups, categories, and XML-based rules
- **[ir.model.access.csv](../payroll/security/ir.model.access.csv)**
- Model access permissions (CRUD rights)
Notes
- Access Control Lists define which groups can access which models
- Record Rules provide row-level security (filter records by user/group)
- Security groups organize users and define permission sets
- All security is enforced at the ORM level by Odoo

View file

@ -1,5 +0,0 @@
# Troubleshooting
- Ensure Python and Odoo environment matches repo guidance.
- Check database connectivity and logs if startup fails.
- Validate that dependent addons listed in DEPENDENCIES.md are installed.

View file

@ -1,7 +0,0 @@
# Usage
Start Odoo including this addon (from repo root):
```bash
python3 scripts/nix_odoo_web_server.py --db-name mydb --addon payroll
```

View file

@ -1,10 +0,0 @@
# Wizards
Transient models exposed as UI wizards in payroll.
```mermaid
classDiagram
class HrPayslipChangeState
class HrPayslipEmployees
class PayslipLinesContributionRegister
```

View file

@ -1,14 +0,0 @@
==============================
Payroll (bosnian hack)
=========================
This module is OCA payroll with hacks:
- bosanske šihtarice.
- postavljanje obračuna da je gotov bez ponovne rekalkulacije obračuna
Ovo treba drugačije riješiti. Ova druga stavka mogla bi se publikovati kao PR na OCA,
ovu prvu treba smjestiti u poseban modul.
hernad@bring.out.ba

View file

@ -1,5 +0,0 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import models
from . import report
from . import wizard

View file

@ -1,42 +0,0 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
{
"name": "Payroll OCA bosnian hack",
"version": "16.0.11.0.0",
"category": "Human Resources",
"website": "https://github.com/OCA/payroll",
"sequence": 28,
"summary": "Manage your employee payroll records",
"license": "LGPL-3",
"author": "Odoo SA, Odoo Community Association (OCA) with bring.out bosnian hack",
"depends": ["hr_contract", "hr_holidays", "mail"],
"data": [
"security/hr_payroll_security.xml",
"security/ir.model.access.csv",
"data/hr_payroll_sequence.xml",
"data/hr_payroll_data.xml",
"wizard/hr_payroll_contribution_register_report_views.xml",
"wizard/hr_payroll_payslips_by_employees_views.xml",
"views/menus.xml",
"views/hr_contract_views.xml",
"views/hr_payroll_structure_views.xml",
"views/hr_salary_rule_category_views.xml",
"views/hr_contribution_register_views.xml",
"views/hr_salary_rule_views.xml",
"views/hr_payslip_line_views.xml",
"views/hr_payslip_views.xml",
"views/hr_payslip_run_views.xml",
"views/hr_employee_views.xml",
"views/hr_rule_parameter_views.xml",
"views/report_contributionregister.xml",
"views/report_payslip.xml",
"views/report_payslipdetails.xml",
"report/report.xml",
"views/res_config_settings_views.xml",
"wizard/hr_payroll_send_email.xml",
"wizard/hr_payslip_change_state_view.xml",
],
"demo": ["demo/hr_payroll_demo.xml"],
"application": True,
"maintainers": ["appstogrow", "nimarosa"],
}

View file

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data noupdate="1">
<!-- Decimal Precision -->
<record forcecreate="True" id="decimal_payroll_amount" model="decimal.precision">
<!-- Decimal Precision Amount -->
<field name="name">Payroll Amount</field>
<field name="digits">4</field>
</record>
<record forcecreate="True" id="decimal_payroll" model="decimal.precision">
<!-- Decimal Precision Total -->
<field name="name">Payroll</field>
<field name="digits">2</field>
</record>
<record forcecreate="True" id="decimal_payroll_rate" model="decimal.precision">
<field name="name">Payroll Rate</field>
<field name="digits">4</field>
</record>
</data>
</odoo>

View file

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data noupdate="1">
<record id="seq_salary_slip" model="ir.sequence">
<field name="name">Salary Slip</field>
<field name="code">salary.slip</field>
<field name="prefix">SLIP/</field>
<field name="padding">3</field>
</record>
</data>
</odoo>

View file

@ -1,246 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="contrib_register_employees" model="hr.contribution.register">
<field name="name">Employees</field>
<field name="partner_id" eval="False" />
</record>
<record id="BASIC" model="hr.salary.rule.category">
<field name="name">Basic</field>
<field name="code">BASIC</field>
</record>
<record id="ALW" model="hr.salary.rule.category">
<field name="name">Allowance</field>
<field name="code">ALW</field>
</record>
<record id="GROSS" model="hr.salary.rule.category">
<field name="name">Gross</field>
<field name="code">GROSS</field>
</record>
<record id="DED" model="hr.salary.rule.category">
<field name="name">Deduction</field>
<field name="code">DED</field>
</record>
<record id="NET" model="hr.salary.rule.category">
<field name="name">Net</field>
<field name="code">NET</field>
</record>
<record id="COMP" model="hr.salary.rule.category">
<field name="name">Company Contribution</field>
<field name="code">COMP</field>
</record>
<record id="hr_rule_basic" model="hr.salary.rule">
<field name="name">Basic Salary</field>
<field name="sequence" eval="1" />
<field name="code">BASIC</field>
<field name="category_id" ref="payroll.BASIC" />
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = contract.wage
</field>
</record>
<record id="hr_rule_taxable" model="hr.salary.rule">
<field name="name">Gross</field>
<field name="sequence" eval="100" />
<field name="code">GROSS</field>
<field name="category_id" ref="payroll.GROSS" />
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = categories.BASIC + categories.ALW
</field>
</record>
<record id="hr_rule_net" model="hr.salary.rule">
<field name="name">Net Salary</field>
<field name="sequence" eval="200" />
<field name="code">NET</field>
<field name="category_id" ref="payroll.NET" />
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = categories.BASIC + categories.ALW + categories.DED
</field>
<field name="register_id" ref="contrib_register_employees" />
</record>
<!-- Salary Structure -->
<record id="structure_base" model="hr.payroll.structure">
<field name="code">BASE</field>
<field name="name">Base for new structures</field>
<field
eval="[(6, 0, [ref('hr_rule_basic'), ref('hr_rule_taxable'),ref('hr_rule_net')])]"
name="rule_ids"
/>
<field name="company_id" ref="base.main_company" />
</record>
<!-- Contribution Register -->
<record id="hr_houserent_register" model="hr.contribution.register">
<field name="name">House Rent Allowance Register</field>
</record>
<record id="hr_provident_fund_register" model="hr.contribution.register">
<field name="name">Provident Fund Register</field>
</record>
<record id="hr_professional_tax_register" model="hr.contribution.register">
<field name="name">Professional Tax Register</field>
</record>
<record id="hr_meal_voucher_register" model="hr.contribution.register">
<field name="name">Meal Voucher Register</field>
</record>
<!-- Salary Rules -->
<record id="hr_salary_rule_houserentallowance1" model="hr.salary.rule">
<field name="amount_select">percentage</field>
<field eval="40.0" name="amount_percentage" />
<field name="amount_percentage_base">contract.wage</field>
<field name="code">HRA</field>
<field name="category_id" ref="payroll.ALW" />
<field name="register_id" ref="hr_houserent_register" />
<field name="name">House Rent Allowance</field>
<field name="sequence" eval="5" />
</record>
<record id="hr_salary_rule_convanceallowance1" model="hr.salary.rule">
<field name="amount_select">fix</field>
<field eval="800.0" name="amount_fix" />
<field name="code">CA</field>
<field name="category_id" ref="payroll.ALW" />
<field name="name">Conveyance Allowance</field>
<field name="sequence" eval="10" />
</record>
<record id="hr_salary_rule_professionaltax1" model="hr.salary.rule">
<field name="amount_select">fix</field>
<field eval="150" name="sequence" />
<field eval="-200.0" name="amount_fix" />
<field name="code">PT</field>
<field name="category_id" ref="payroll.DED" />
<field name="register_id" ref="hr_professional_tax_register" />
<field name="name">Professional Tax</field>
</record>
<record id="hr_salary_rule_providentfund1" model="hr.salary.rule">
<field name="amount_select">percentage</field>
<field eval="120" name="sequence" />
<field eval="-12.5" name="amount_percentage" />
<field name="amount_percentage_base">contract.wage</field>
<field name="code">PF</field>
<field name="category_id" ref="payroll.DED" />
<field name="register_id" ref="hr_provident_fund_register" />
<field name="name">Provident Fund</field>
</record>
<record id="hr_salary_rule_ca_demo" model="hr.salary.rule">
<field name="amount_select">fix</field>
<field eval="600.0" name="amount_fix" />
<field name="code">CAMD</field>
<field name="category_id" ref="payroll.ALW" />
<field name="name">Conveyance Allowance For Marc Demo</field>
<field name="sequence" eval="15" />
</record>
<record id="hr_salary_rule_meal_voucher" model="hr.salary.rule">
<field name="amount_select">fix</field>
<field eval="10" name="amount_fix" />
<field name="quantity">
worked_days.WORK100 and worked_days.WORK100.number_of_days
</field>
<field name="code">MA</field>
<field name="category_id" ref="payroll.ALW" />
<field name="register_id" ref="hr_meal_voucher_register" />
<field name="name">Meal Voucher</field>
<field name="sequence" eval="16" />
</record>
<record id="hr_salary_rule_sales_commission" model="hr.salary.rule">
<field name="amount_select">code</field>
<field name="code">SALE</field>
<field name="category_id" ref="payroll.ALW" />
<field name="name">Get 1% of sales</field>
<field name="sequence" eval="17" />
<field name="amount_python_compute">
result = ((inputs.SALEURO and inputs.SALEURO.amount) + (inputs.SALASIA and
inputs.SALASIA.amount)) * 0.01
</field>
</record>
<!-- Rule Inputs -->
<record id="hr_rule_input_sale_a" model="hr.rule.input">
<field name="code">SALEURO</field>
<field name="name">Sales to Europe</field>
<field name="input_id" ref="hr_salary_rule_sales_commission" />
</record>
<record id="hr_rule_input_sale_b" model="hr.rule.input">
<field name="code">SALASIA</field>
<field name="name">Sales to Asia</field>
<field name="input_id" ref="hr_salary_rule_sales_commission" />
</record>
<!-- Salary Structure -->
<record id="structure_001" model="hr.payroll.structure">
<field name="code">ME</field>
<field name="name">Marketing Executive</field>
<field
eval="[(6, 0, [ref('hr_salary_rule_houserentallowance1'),
ref('hr_salary_rule_convanceallowance1'),ref('hr_salary_rule_professionaltax1'),ref('hr_salary_rule_providentfund1')])]"
name="rule_ids"
/>
<field name="company_id" ref="base.main_company" />
<field name="parent_id" ref="structure_base" />
</record>
<record id="structure_002" model="hr.payroll.structure">
<field name="code">MEMD</field>
<field name="name">Marketing Executive for Marc Demo</field>
<field
eval="[(6, 0, [ref('hr_salary_rule_ca_demo'), ref('hr_salary_rule_meal_voucher')])]"
name="rule_ids"
/>
<field name="company_id" ref="base.main_company" />
<field name="parent_id" ref="structure_001" />
</record>
<!-- Employee
<record id="hr_employee_payroll" model="hr.employee">
<field name="company_id" ref="base.main_company" />
<field eval="1" name="active" />
<field name="name">Roger Scott</field>
<field name="work_location">Building 1, Second Floor</field>
<field name="work_phone">+3282823500</field>
<field
name="image_1920"
type="base64"
file="payroll/static/img/hr_employee_payroll-image.jpg"
/>
</record>
-->
<!--
<record id="hr_employee_payroll" model="hr.employee">
<field name="name">Roger Scott</field>
<field name="department_id" ref="dep_rd"/>
<field name="parent_id" ref="employee_al"/>
<field name="job_id" ref="hr.job_developer"/>
<field name="job_title">Experienced Developer</field>
<field name="category_ids" eval="[(6, 0, [ref('employee_category_4')])]"/>
<field name="work_location_id" ref="work_location_1"/>
<field name="work_phone">(449)-888-9999</field>
<field name="work_email">roger.scott@example.com</field>
<field name="image_1920" type="base64" file="payroll/static/img/hr_employee_payroll-image.jpg"/>
<field name="create_date">2010-01-01 00:00:00</field>
</record>
-->
<!-- Employee Contract
<record id="hr_contract_firstcontract1" model="hr.contract">
<field name="name">Marketing Executive Contract</field>
<field name="date_start" eval="time.strftime('%Y-%m')+'-1'" />
<field name="date_end" eval="time.strftime('%Y')+'-12-31'" />
<field name="struct_id" ref="payroll.structure_001" />
<field name="employee_id" ref="hr_employee_payroll" />
<field name="notes">Default contract for marketing executives</field>
<field eval="4000.0" name="wage" />
</record>
-->
<record id="hr_contract_marc_demo" model="hr.contract">
<field name="name">Contract For Marc Demo</field>
<field name="date_start" eval="time.strftime('%Y-%m')+'-1'" />
<field name="date_end" eval="time.strftime('%Y')+'-12-31'" />
<field name="struct_id" ref="payroll.structure_002" />
<field name="employee_id" ref="hr.employee_qdp" />
<field name="notes">This is Marc Demo's contract</field>
<field eval="5000.0" name="wage" />
</record>
</odoo>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,17 +0,0 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import hr_contract
from . import hr_employee
from . import hr_payroll_structure
from . import hr_salary_rule
from . import hr_salary_rule_category
from . import hr_rule_input
from . import hr_contribution_register
from . import base_browsable
from . import hr_payslip
from . import hr_payslip_line
from . import hr_payslip_input
from . import hr_payslip_worked_days
from . import hr_payslip_run
from . import res_config_settings
from . import hr_rule_parameter

Some files were not shown because too many files have changed in this diff Show more